当调用 v8 模块的 getHeapStatistics 函数时, heap_size_limit 属性对于设置超过 4GB 的内存大小不正确。 特别是如果您设置 max_old_space >= 4032,heap_size_limit 是不正确的。 重现:
节点 --max_old_space_size=3072
require('v8').getHeapStatistics().heap_size_limit
3288334336
这正如你所期望的,但看看 4096 做了什么:
节点 --max_old_space_size=4096
require('v8').getHeapStatistics().heap_size_limit
67108864
64 MB???? 那是不对的。 经过一些试验和错误,神奇的断点是 4032:
节点 --max_old_space_size=4032
require('v8').getHeapStatistics().heap_size_limit
0
当设置为 4092 时,堆大小为零。
这也发生在 Mac OS X 10.11.6 和 Node v5.11.0
最有用的评论
https://github.com/nodejs/node/pull/10186