从文档中,v8.getHeapSpaceStatistics()返回如下内容
[
{
"space_name": "new_space",
"space_size": 2063872,
"space_used_size": 951112,
"space_available_size": 80824,
"physical_space_size": 2063872
},
...
]{
total_heap_size: 7326976,
total_heap_size_executable: 4194304,
total_physical_size: 7326976,
total_available_size: 1152656,
used_heap_size: 3476208,
heap_size_limit: 1535115264,
malloced_memory: 16384,
peak_malloced_memory: 1127496,
does_zap_garbage: 0,
number_of_native_contexts: 1,
number_of_detached_contexts: 0
}谁能解释一下这些钥匙和空格到底是什么意思吗?
发布于 2020-01-03 12:16:16
V8在不同的空间管理堆,new_space用于快速收集的新对象,而old_space用于更长寿的对象。v8.getHeapSpaceStatistics()返回关于不同空间的统计信息。本文更详细地解释了不同的空间:http://jayconrod.com/posts/55/a-tour-of-v8-garbage-collection
这里引用了文章中的解释:
新空间:大多数对象都在这里分配。新空间很小,被设计成垃圾收集非常快,独立于其他空间。 旧指针空间:包含大多数对象,其中可能有指向其他对象的指针。大多数物体在新空间生存一段时间后被移到这里。 旧数据空间:包含仅包含原始数据的对象(没有指向其他对象的指针)。在新的空间中生存一段时间后,字符串、盒式数字和非装箱双数数组将移到这里。 大对象空间:这个空间包含的对象大于其他空间的大小限制。每个对象都有自己的mmap内存区域。垃圾收集器从不移动大型对象。 代码空间:包含JITed指令的代码对象在这里分配.这是唯一有可执行内存的空间(尽管代码可以在大对象空间中分配,这些代码也是可执行的)。 单元格空间、属性单元格空间和映射空间:这些空间分别包含单元格、PropertyCells和地图.这些空格中的每一个都包含大小相同的对象,并对它们指向的对象类型有一些限制,从而简化了集合。
v8.getHeapStatistics()中不同字段的含义已经在这里得到了回答:nodejs v8. v8.getHeapStatistics方法
https://stackoverflow.com/questions/59578303
复制相似问题