2017-03-11 42 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