2016-07-26 30 views
2

私はGentoo Linux 64ビット版でNodeJS 6.3.1アプリケーションを作成しています。 このマシンでは、私は一般に16GBの空きメモリと9GBのスワップスペースのうち9GBをほとんど使用していません。max_old_space_sizeは4GBに設定されていますが、実際には2GBに制限されます

私は自分のNode.jsアプリケーションのテストメモリ制限に次のコードを使用します。

var arr = []; 
var c=0; 
while(arr.push('foo')) {if (++c%100000 == 0) {console.info(process.memoryUsage());}} 

がノードに余分なパラメータを指定してこのスクリプトを実行すると、最後MemoryUsageのラインはこれです:

{ rss: 1032232960, heapTotal: 1015185408, heapUsed: 1008680024 } 
--max_old_space_size=4096でのNode.jsを実行している

、最後MemoryUsageのラインはこれです:

{ rss: 2202341376, heapTotal: 2189082624, heapUsed: 2177311480 } 

現在8000限度:

{ rss: 1934946304, heapTotal: 1921712128, heapUsed: 1909919344 } 

何が欠けていますか?ヒープを4GBまたは8GBに増やすにはどうすればよいですか?

答えて

1

V8の限界だと思います。 64ビットマシンでは1.7GB以上のRAMを使用しません。 FAQから引用:

現在、デフォルトV8によって32ビット システムに512メガバイトのメモリ制限があり、64ビットシステムで1GB。 --max-old-space-sizeを〜1GB(32ビット)と〜1.7GB(64ビット)の最大値に設定することで制限を上げることができますが、単一のプロセスを分割することをお勧めします あなたが記憶限界を打つならば、いくつかの労働者。

+0

ありがとうございました。これはいつものケースですか?オンラインの多くのチュートリアルでは、最大古いスペースサイズを4GBまたは8GBに増やしたことが示されています。 – ufk

関連する問題