几种常见内存问题的解决策略
几种内存问题
内存泄漏(Memory leak),它会导致页面的性能越来越差;
内存膨胀(Memory bloat),它会导致页面的性能会一直很差;
频繁垃圾回收,它会导致页面出现延迟或者经常暂停。
内存泄漏(Memory leak)
当进程不再需要某些内存的时候,这些不再被需要的内存依然没有被进程回收。
在JavaScript中,造成内存泄漏(Memory leak)的主要原因是不再需要(没有作用)的内存数据依然被其他对象引用着。
全局变量
use strict
闭包
根据实际情况引用数据,不需要就不引用。
JavaScript引用了DOM节点
内存膨胀
内存膨胀主要表现在程序员对内存管理的不科学,比如只需要50M内存就可以搞定的,有些程序员却花费了500M内存。
额外使用过多的内存有可能是没有充分地利用好缓存,也有可能加载了一些不必要的资源。通常表现为内存在某一段时间内快速增长,然后达到一个平稳的峰值继续运行。
比如一次性加载了大量的资源,内存会快速达到一个峰值。
频繁的垃圾回收那就是频繁使用大的临时变量,导致了新生代空间很快被装满,从而频繁触发垃圾回收。频繁的垃圾回收操作会让你感觉到页面卡顿。比如下面这段代码:
function strToArray(str) {
let i = 0
const len = str.length
let arr = new Uint16Array(str.length)
for (; i
这段代码就会频繁创建临时变量,这种方式很快就会造成新生代内存内装满,从而频繁触发垃圾回收。
为了解决频繁的垃圾回收的问题,你可以考虑将这些临时变量设置为全局变量。
此文章为6月Day29学习笔记,内容来源于极客时间《图解 Google V8》,日拱一卒,每天进步一点点💪💪
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net