V8
V8 垃圾回收机制
如何查看 V8 内存使用情况
使用 process.memoryUsage() 返回
{
rss: 4935680,
heapTotal: 1826816,
heapUsed: 650472,
external: 49879
}
- heapTotal 和 heapUsed 代表V8的内存使用情况。
- external代表V8管理的,绑定到Javascript的C++对象的内存使用情况。
- rss, 驻留集大小, 是给这个进程分配了多少物理内存(占总分配内存的一部分) 这些物理内存中包含堆,栈,和代码段。
V8 内存限制是多少,为什么这么设计
64位系统下是1.4GB, 32位系统下是0.7GB。因为1.5GB的垃圾回收堆内存,V8需要花费50毫秒以上,做一次非增量式的垃圾回收甚至要1秒以上。这是垃圾回收中引起Javascript线程暂停执行的事件,在这样的花销下,应用的性能和影响力都会直线下降。
V8 内存分代和回收算法
在V8中,主要将内存分为新生代和老生代两代。新生代中的对象存活时间较短的对象,老生代中的对象存活时间较长,或常驻内存的对象。