【问题标题】:nodejs v8.getHeapStatistics methodnodejs v8.getHeapStatistics 方法
【发布时间】:2017-05-23 08:23:27
【问题描述】:

在 nodejs v8 模块中,有一个名为 getHeapStatistics 的函数,它返回一个包含内存使用信息的对象:

{ 
  total_heap_size: 221540352,
  total_heap_size_executable: 5242880,
  total_physical_size: 221540352,
  total_available_size: 1286110104,
  used_heap_size: 189179192,
  heap_size_limit: 1501560832,
  malloced_memory: 16384,
  peak_malloced_memory: 1325112,
  does_zap_garbage: 0 
}

每个字段的含义是什么?

【问题讨论】:

    标签: node.js memory v8


    【解决方案1】:

    来自gc-heap-stats package的一些很好的解释:

    • total_heap_size:V8 为堆分配的字节数。如果 usedHeap 需要更多,这可能会增长。
    • used_heap_size:应用程序数据使用的字节数
    • total_heap_size_executable:已编译字节码和 JITed 代码的字节数
    • heap_size_limit:堆不能超过的绝对限制(默认限制或--max_old_space_size)
    • total_physical_size:承诺大小

    来自Node.JS docs

    • does_zap_garbage 是一个 0/​​1 布尔值,表示是否启用了 --zap_code_space 选项。这使得 V8 使用位模式覆盖堆垃圾。 RSS 占用空间(常驻内存集)变得更大,因为它不断接触所有堆页面,这使得它们不太可能被操作系统换出。

    自我描述:

    • total_available_size:可用堆大小
    • malloced_memory:当前内存量,通过malloc获取
    • peak_malloced_memory:内存峰值,通过malloc获取

    【讨论】:

    • “其他字段非常具有自我描述性。”我不同意,通过谷歌来到这里的人可能正试图专门找出其中的一个,以便学习。如果不是很麻烦,我希望您扩展您的答案以包括缺失的部分,即使它是对您的“自我描述”:) 对下一个人来说可能不是
    • 好的,我扩展了我的答案。
    • 想知道 peak_malloced_memory 是如何获得的,为了统计目的保留了多长时间...
    【解决方案2】:

    V8 API documentation directly generated from the sources,但是没有说明HeapStatistics的细节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-11
      • 2022-07-18
      • 1970-01-01
      • 2015-06-05
      • 2012-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多