这是一个创建于 160 天前的主题,其中的信息可能已经有所发展或是发生改变。
前情: https://www.v2ex.com/t/392238
从 Python 转过来写了几个 Node 微服务全它妈的跑一天就 Out of memory,之前暂时用了高内存就主动自杀的补丁顶着。
然后这二天查了相关文章,发现 Node 的 gc 和 Python 是完全不同的,Python 的 gc 相当主动(可能和引用计数有关),一有无用内存当场就回收了,而 Node 不会(类似于 Java )。 默认 64 位机器 Node gc 认为你有 1.4G 内存,到这个点之前 gc 干活相当偷懒,可是我都是跑在 1G 小鸡上的,所以就 BOOM 了。
所以你是在内存小于 1G 的机器上跑比较忙的需长时间运行的程序,需要在 Node 命令行上加上 --max_old_space_size=384 --optimize_for_size
这二参数,我跑了几天内存都没过 400M,而以前没多长时间就超 700M 引起 OOM。