美文网首页
js内存机制总结

js内存机制总结

作者: 晨阁先生 | 来源:发表于2020-07-21 15:55 被阅读0次

内存大小

  • 和操作系统有关,64位为1.4G,32位为0.7G
  • 64位下新生代的空间为64MB,老生代为1400MB
  • 32位下新生代的空间为16MB,老生代为700MB

js内存回收会暂停整个代码的执行

V8引擎的内存分配

新生代转换为老生代的条件

  1. 新生代内存占用25%以上
  2. 经历过一次回收但仍然存在的变量

区别

算法不同
- 老生代牺牲空间换取时间,会产生磁盘碎片
- 新生代一分为二,把不能回收的变量标记并进行复制

监听内存占用

1. node端 — process.memoryUsage()
2. 浏览器 — window.performance

代码:

function getme() {
    var men = process.memoryUsage();
    var format = function(bytes){
        return (bytes / 1024 /1024).toFixed(2) + 'MB';
    }
    console.log('heapTotal:' + format(men.heapTotal) +
        'heapUsed:' + format(men.heapUsed)
    )
}

var a = [];
var size = 20 * 1024 * 1024;
function b() {
    var arr1 = new Array(size)
    var arr2 = new Array(size)
    var arr3 = new Array(size)
    var arr4 = new Array(size)
    var arr5 = new Array(size)
}
b();
getme();
setInterval(()=>{
    a.push(new Array(size));
    getme();
},1000)

运行结果:


当内存不足时,function b 中的局部变量未被引用,直接回收,直到内存不足报错。

当确认变量不再会被引用,可将变量的值设置为null或undefined来进行释放。

相关引用

1. 大文件上传 (切片上传)
2. node读取大文件,应使用stream,而不是readFile

性能监控方法

  • lighthouse
  • 回报代码

相关文章

  • js内存机制总结

    内存大小 和操作系统有关,64位为1.4G,32位为0.7G 64位下新生代的空间为64MB,老生代为1400MB...

  • js内存泄露

    js内存泄露 js内存的机制 js的基本变量 boolean string number null undefin...

  • js知识版图-数据类型

    一、js中内存分为栈内存、堆内存此处引申知识点:js中堆栈内存及函数处理机制 栈内存 从数据类型角度思考 栈内存 ...

  • 前端面试-JS垃圾回收机制

    什么是垃圾回收机制? JS的垃圾回收机制是为了以防内存泄漏,内存泄漏的含义就是当已经不需要某块内存时这块内存还存在...

  • JS垃圾回收机制

    JS的内存生命周期: 分配你所需要的内存 使用分配到的内存(读、写) 不需要时将其释放、归还 js垃圾回收机制: ...

  • 垃圾回收机制

    概述 JS的垃圾回收机制是为了以防内存泄漏,内存泄漏的含义就是当已经不需要某块内存时这块内存还存在着,垃圾回收机制...

  • JS 里垃圾回收机制是什么,常用的是哪种,怎么处理的?

    JS 的垃圾回收机制是为了以防内存泄漏,内存泄漏的含义就是当已经不需要某块内存时这块内存还存在着,垃圾回收机制就是...

  • 浅复制(浅拷贝)和深复制(深拷贝)

    js存储机制 JS中对象分为基本类型和复合(引用)类型,基本类型存放在栈内存,复合(引用)类型存放在堆内存。堆内存...

  • 2018-10-13

    浅谈浏览器的垃圾回收机制和内存泄露 JavaScript使用垃圾回收机制来自动管理内存。 JS的回收机制分两种:1...

  • JS中的基本数据类型与所在内存空间那些事

    一、内存空间 为了便于理解,我们暂且先将Js的内存分为栈内存和堆内存。 JavaScript具有垃圾自动回收机制,...

网友评论

      本文标题:js内存机制总结

      本文链接:https://www.haomeiwen.com/subject/nchykktx.html