v8 引擎的内存

Posted muamaker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了v8 引擎的内存相关的知识,希望对你有一定的参考价值。

一、nodejs查看内容使用情况:

process.memoryUsage()

  

技术图片

 

 单位为 Btye 

转化函数:

var format = function(bytes) { 
              return (bytes/1024/1024).toFixed(2)+‘MB‘; 
        };

  

heapTotal 和 heapUsed 代表 V8 的内存使用情况。 

external 代表 V8 管理的,绑定到 javascript 的 C++ 对象的内存使用情况。 

rss 是驻留集大小, 是给这个进程分配了多少物理内存(占总分配内存的一部分),这些物理内存中包含堆、代码段、以及栈。

对象、字符串、闭包等存于堆内存。 变量存于栈内存,实际的 JavaScript 源代码存于代码段内存。

 

二、浏览器的查看

window.performance.memory

  

三、内存的分布

技术图片

 

新生代内存,是采用循环回收,即: 

从 from 取出 活着 的变量,放入 to , 清空 from 内存,然后 取出 to 里面 活着 的变量,存入 from , 清空 to 内存, 如此交替执行。

老生代内存,当新生代内存占用超过 一定 百分比, 开始存入老生代。

老生代内存是每次标记出活着的变量,删掉死去的, 然后整理内存,将碎片合并。

 

四、内存的使用

1、尽量不声明全局变量

2、声明了全局变量,当不再使用的时候,置为 undefined 或者 null

 

五、误区

闭包会造成内存泄漏

实际上,这是 javascript 权威指南,对 ie5 的一种说法,在 v8 里面是不存在的,包括目前的新浏览器,都不存在。

具体的,可以自己用上面获取内存的办法,去比对。闭包对内存发现基本没有影响。

 

以上是关于v8 引擎的内存的主要内容,如果未能解决你的问题,请参考以下文章

v8 引擎的内存

nodejs与v8引擎

javaScript的V8引擎

V8引擎回收机制 内存泄露

V8 引擎如何进行垃圾内存的回收?

JavaScript 引擎「V8」发布 8.0 版本,内存占用量大幅下降