2017-03-11 40 views
0

我与下面的空闲内存Raspberry Pi 3 B运行的node.js:如何调整树莓派的node.js内存使用情况?

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的内存消耗,以防止交换?还有任何其他技巧来挤出更多的免费ram出pi的,将不胜感激。

我已经设置了内存分割,以便GPU分配至少16兆内存。

回答

2

防止交换的唯一防弹方法是关闭操作系统中的交换(删除或注释掉/etc/fstab中的任何交换行以进行永久设置,或使用swapoff -a关闭当前会话的所有交换设备)。请注意,内核在没有可用内存时被强制终止随机进程(无论是否使用交换)。

在node.js中,您可以限制的是V8托管堆的大小,而您已经提到的--max-old-space-size标志是实现该目标的主要方式。大约400-500(兆字节)的值可能对您的树莓有意义。还有--max-semi-space-size,它应该很小,你可以坚持使用默认设置,并且--max-executable-size用于生成代码(需要多少取决于你运行的应用程序;我只是坚持使用默认设置)。因为在托管堆之外还有其他内存使用者(例如,node.js本身,V8的解析器和编译器),所以无法限制进程的整体内存使用情况。没有办法对各种内存使用情况设置限制。 (因为这样的限制会有什么作用?当内存需要但不可用时会崩溃?无论如何,内核会照顾到这一点。)

+0

正是我在找的东西,谢谢! – rynop