【问题标题】:How to get the value of max_old_space_size from the code?如何从代码中获取 max_old_space_size 的值?
【发布时间】:2018-01-10 15:37:12
【问题描述】:

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

node --max_old_space_size=500 app.js

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

更新

在@Grégory NEUT 的帮助下,我们发现v8.getHeapStatistics() 包含一个字段heap_size_limit,看起来就像我要找的一样。

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

当我将max_old_space_size 设置为500 MB 时,我也不明白为什么heap_size_limit 变成557842432 字节(557.8 MB)

【问题讨论】:

    标签: node.js memory garbage-collection


    【解决方案1】:

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

    2019 年更新Node.js v11.x Documentation


    评论中的 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()

    2019 年更新Node.js v11.x Documentation

    【讨论】:

    • 感谢您的回答。我检查了它。看起来不太一样。 heapTotal 的值对于不同的max_old_space_size 值是相同的7159808
    • @LEQADA 哦,好的,去检查是否还有其他内容。感谢您查看并抱歉
    • 感谢您的更新!看起来是heap_size_limittotal_available_size。对于max_old_space_size=500 heap_size_limit 返回557842432total_available_size 返回548898944。对于max_old_space_size=900 heap_size_limit 返回977272832total_available_size 返回968329344
    • 干得好! :) 现在也许某个非常强大的人可以向我们解释为什么限制和实际值之间存在如此大的差异 :D 我猜像内存 pageSize 之类的东西
    • old_space 只是堆中最大的可配置部分,并不是整个堆。 557842432 是 532MB ..这是管理的总堆。 old_space(垃圾收集前对象所在的位置)为 500MB。
    猜你喜欢
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多