【发布时间】:2014-07-29 16:06:35
【问题描述】:
我在资源非常有限的嵌入式环境中工作。我们正在尝试使用 node.js,它运行良好,但通常会消耗大约 60 兆字节的虚拟内存(实际使用的内存大约是 5 兆字节。)鉴于我们的限制,这是太多的虚拟内存;我们最多只能允许 node.js 使用大约 30 兆字节的 VM。
node.js 有几个命令行选项,例如“--max_old_space_size”, “--max_executable_size”和“--max_new_space_size”,但经过实验,我发现这些都是控制实际内存使用量,而不是最大虚拟内存大小。
如果重要的话,我正在使用 ARM 架构上的 ubuntu linux 变体。
是否有任何选项或设置允许设置 node.js 进程允许使用的最大虚拟内存量?
【问题讨论】:
-
为什么会有问题? Linux 使用过度分配:此虚拟内存将仅作为进程页表中的条目存在,直到它真正被使用。
-
嗯。我不确定。这是一个嵌入式环境(意思是:没有磁盘空间)所以不是所有的虚拟分配都会占用一些实际内存吗?我会向我的老板提出这个想法,但我觉得这不会有任何影响;我被命令减少足迹,并认为我不应该这样做不会带来太大的重量。 “客户永远是对的”之类的东西。此外,我遇到了另一个问题;我使用 setrlimit() 编写了一个函数来将虚拟内存使用限制在 55 兆以下,现在 node.js 退出并出现 malloc 错误。有什么建议吗?
-
嗨,迈克。你是怎么解决这个问题的?
标签: node.js embedded virtual-memory limiting