2017-10-24 20 views
0

私はノードアプリケーションのメモリサイズをカスタマイズしたい、リアルタイムアプリケーションメモリの使用量と容量を記録するミドルウェアを追加したい。ノードアプリケーションのメモリサイズを制限する方法、および現在のメモリ使用量と容量を確認する方法は?

私はメモリの制限が〜1ギガバイト(32ビット)および〜1.7ギガバイト(64ビット)

例の最大--max-古い空間サイズを設定することによって上昇させることができる知っている:

node --max-old-space-size=1024 app.js 

しかし、私はv8を使用して、どのようにメモリ容量と使用量を確認するには?

更新:

私はV8でのアプリのためのメモリを高めるために別のアプローチを使用していました。

const v8 = require('v8'); 
v8.setFlagsFromString('--max_old_space_size=2048'); 

これはHeapSpaceStatistics

########## v8.getHeapSpaceStatistics()################
[ 
    { 
     "space_name": "new_space", 
     "space_size": 1048576, 
     "space_used_size": 781704, 
     "space_available_size": 249464, 
     "physical_space_size": 798416 
    }, 
    { 
     "space_name": "old_space", 
     "space_size": 18874368, 
     "space_used_size": 16844024, 
     "space_available_size": 270840, 
     "physical_space_size": 18772464 
    }, 
    { 
     "space_name": "code_space", 
     "space_size": 4718592, 
     "space_used_size": 4344800, 
     "space_available_size": 95424, 
     "physical_space_size": 4586176 
    }, 
    { 
     "space_name": "map_space", 
     "space_size": 1572864, 
     "space_used_size": 962104, 
     "space_available_size": 584648, 
     "physical_space_size": 1187888 
    }, 
    { 
     "space_name": "large_object_space", 
     "space_size": 1626112, 
     "space_used_size": 1603664, 
     "space_available_size": 1471614464, 
     "physical_space_size": 1626112 
    } 
] 
ためのログであります

2GBのメモリ制限を設定しました。ログに基づいて、その確認方法は?

答えて

0

--trace_gcV8 optionprocess.memoryUsage()はあなたにVMが設定されたサイズで起動しませんが、それはそれに成長することができます

node --trace_gc --max_old_space_size=4096 -e ' 
    let a = [] 
    for(let i=1; i>0; i++){ 
    a.push({ a: "testing" }) 
    if (i % 1000000 === 0) console.log("%j", process.memoryUsage()) 
    if (i % 10000000 === 0) console.log(v8.getHeapSpaceStatistics()) 
    } 
' 

注意を全体的に良好な数字を与える必要があります。私は、V8がJVMのように最小の古い領域サイズを設定するという概念を持っているとは思わない。

また、新しいメモリや外部メモリなどの他のスペースは古いスペースサイズの上で使用されるため、max_old_space_sizeの設定は実際のプロセスメモリ制限ではありません。

+0

ありがとうございます、私はこれを私のコードで試してみます。 – landscape1250

関連する問題