如何从代码中获取max_old_space_size的值?

LEQ*_*ADA 4 memory garbage-collection node.js

据我了解,可以为这样的应用程序设置最大内存使用限制:

node --max_old_space_size=500 app.js
Run Code Online (Sandbox Code Playgroud)

是否可以max_old_space_size从代码中获取的值?

更新

在@GrégoryNEUT的帮助下,我们发现其中v8.getHeapStatistics()包含一个heap_size_limit看起来像我想要的字段。

但是我仍然不确定,因为我没有找到任何支持该理论的官方文档(或来自Node.js的一些代码)。

我也不明白为什么设置为MB后heap_size_limit变成557842432字节(557.8MB)max_old_space_size500

Gré*_*EUT 6

Node.js v9.4.0文档中,您可以找到函数v8.getHeapStatistics(),该函数为您提供堆大小信息。

更新2019Node.js v11.x文档


来自评论的LEQADA示例:

对于 max_old_space_size=500

heap_size_limit : 557842432

total_available_size : 548898944


对于 max_old_space_size=900

heap_size_limit : 977272832

total_available_size : 968329344


在此处输入图片说明


编辑:process.memoryUsage()不提供有关堆的最大大小的信息


Node.js v9.4.0文档中,您可以找到函数process.memoryUsage(),该函数为您提供堆大小信息。

更新2019Node.js v11.x文档

在此处输入图片说明

  • 谢谢你的回答。我查了一下。看起来好像不太一样。对于不同的 max_old_space_size 值,heapTotal 的值是相同的 7159808 (2认同)
  • 谢谢你的更新!看起来像是“heap_size_limit”或“total_available_size”。对于“max_old_space_size=500”,“heap_size_limit”返回“557842432”,“total_available_size”返回“548898944”。对于“max_old_space_size=900”,“heap_size_limit”返回“977272832”,“total_available_size”返回“968329344” (2认同)
  • old_space 只是堆中最大的可配置部分,而不是堆的全部。557842432 是 532MB..这是管理的总堆。old_space(垃圾回收之前对象所在的位置)为 500MB。 (2认同)