如何为 Raspberry pi 调整 node.js 内存使用?
How do I tune node.js memory usage for Raspberry pi?
我 运行 node.js 在 Raspberry Pi 3 B 上,可用内存如下:
free -m
total used free shared buffers cached
Mem: 973 230 742 6 14 135
-/+ buffers/cache: 80 892
Swap: 99 0 99
如何将节点 (v7) 配置为不使用所有空闲内存?为了延长SD卡的使用寿命,我想防止它去交换。
我知道 --max_old_space_size
:
node --v8-options | grep -A 5 max_old
--max_old_space_size (max size of the old space (in Mbytes))
type: int default: 0
我知道一些答案是特定于应用程序的,但是有哪些通用技巧可以限制 node.js 内存消耗以防止交换?还有任何其他从 pi 中挤出更多空闲 ram 的技巧将不胜感激。
我已经设置了内存拆分,以便 GPU 至少分配 16 兆内存。
防止交换的唯一可靠方法是在操作系统中关闭交换(删除或注释掉 /etc/fstab
中的任何交换行以进行永久设置,或使用 swapoff -a
关闭所有为当前会话交换设备)。请注意,当没有可用的可用内存时,内核会被迫终止随机进程(无论有没有交换都是如此)。
在node.js中,你可以限制的是V8的托管堆的大小,你已经提到的--max-old-space-size
标志是这样做的主要方式。大约 400-500(兆字节)的值可能对您的 Raspberry 有意义。还有 --max-semi-space-size
应该很小,你可以坚持使用默认值,--max-executable-size
用于生成代码(你需要多少取决于你 运行 的应用程序;我只是坚持使用默认值)。
也就是说,没有办法限制进程的整体内存使用,因为在托管堆之外还有其他内存消费者(例如 node.js 本身,V8 的解析器和编译器)。无法对各种内存使用设置限制。 (因为这样的限制会做什么?当需要内存但不可用时崩溃?内核无论如何都会处理这个问题。)
我 运行 node.js 在 Raspberry Pi 3 B 上,可用内存如下:
free -m
total used free shared buffers cached
Mem: 973 230 742 6 14 135
-/+ buffers/cache: 80 892
Swap: 99 0 99
如何将节点 (v7) 配置为不使用所有空闲内存?为了延长SD卡的使用寿命,我想防止它去交换。
我知道 --max_old_space_size
:
node --v8-options | grep -A 5 max_old
--max_old_space_size (max size of the old space (in Mbytes))
type: int default: 0
我知道一些答案是特定于应用程序的,但是有哪些通用技巧可以限制 node.js 内存消耗以防止交换?还有任何其他从 pi 中挤出更多空闲 ram 的技巧将不胜感激。
我已经设置了内存拆分,以便 GPU 至少分配 16 兆内存。
防止交换的唯一可靠方法是在操作系统中关闭交换(删除或注释掉 /etc/fstab
中的任何交换行以进行永久设置,或使用 swapoff -a
关闭所有为当前会话交换设备)。请注意,当没有可用的可用内存时,内核会被迫终止随机进程(无论有没有交换都是如此)。
在node.js中,你可以限制的是V8的托管堆的大小,你已经提到的--max-old-space-size
标志是这样做的主要方式。大约 400-500(兆字节)的值可能对您的 Raspberry 有意义。还有 --max-semi-space-size
应该很小,你可以坚持使用默认值,--max-executable-size
用于生成代码(你需要多少取决于你 运行 的应用程序;我只是坚持使用默认值)。
也就是说,没有办法限制进程的整体内存使用,因为在托管堆之外还有其他内存消费者(例如 node.js 本身,V8 的解析器和编译器)。无法对各种内存使用设置限制。 (因为这样的限制会做什么?当需要内存但不可用时崩溃?内核无论如何都会处理这个问题。)