問題タブ [tcmalloc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - TCMalloc の「OS に解放されたバイト数 (マップされていない)」統計を理解する
起動時に大量のメモリを消費するプロセスがありますが、プロセスのブートストラップ後にそのメモリのほとんどを解放します。その後に出力された TCMalloc 統計に次のように表示されます。
ここでは、約 228 MB が「OS に解放」されていることがわかりますが、これはまだプロセスの仮想アドレス空間の一部であることも示しています。これは、ps aux で見られる VSZ 統計が、このロギングが見られた後も高いままであるという事実によって裏付けられています。
strace を使用して同じプログラムを実行すると、brk へのすべての呼び出しが増加しており、munmap への呼び出し (サイズに関して) が mmap-ed (および上に示した) の量に達していないことがわかります。 . さらに悪いことに、私のプロセスがバックグラウンド作業を行っているため、VSZ は時間の経過とともにゆっくりと増加し、これらの統計がログに記録されるとそれに応じて (***) が増加することがログに示されます。
私の質問は次のとおりです。この値は何を表していますか? 私のメモリは解放されましたか?この消費量の増加を防ぐにはどうすればよいでしょうか?