ps
のVSZはアプリに割り当てられた合計アドレス空間用であり、vsizeとしてエイリアスされる場合があることを知っています(Linuxのps
のmanページに記載されています)。top
のVSIZEの定義は何ですか? iPhoneからのこのトップ出力は、Linuxのトップ出力とは異なります。
PID COMMAND %CPU TIME #TH #PRTS #MREGS RPRVT RSHRD RSIZE VSIZE
1875 emma 0.0% 0:30.83 7 139 932 17868K 5328K 29M 181M
root# ps -eo pid,rss,vsz|grep 1875
1875 29324 441324
Linuxメモリシステムは、メモリ最適化ユーティリティとメモリ共有の多くのルーチンで満たされ、メモリがどのように共有され、どのように消費されるかという非常にわかりにくいアプローチをとっています.psと他のps関連コマンドの出力はすべて、データからの出力を処理します/proc
ファイルシステム。特にps
、RSS(常駐メモリ)およびVSIZE(仮想メモリサイズ)はどちらも重要ですが、VSIZEはメモリの正確な使用状況を表示せず、VSIZEとrssの違いは実際に意図され割り当てられているものです初期化中にプログラムに追加されますが、まだ参照されていない場合があります。同様に、プログラムには多数のライブラリがリンクされている可能性がありますが、実際のプログラムランタイムではまだ参照されていないため、まだ読み込まれていません。 RSSは、プログラムによって実際に使用される合計メモリを提供しますが、割り当てられたメモリのほとんどが同じプロセスまたは他のプロセスの他のインスタンスと共有される可能性があるため、メモリ消費の正確な状況を提供しない場合があります。 /proc/<processid>/maps
を見ると、メモリがどのように使用されたかがおおまかにわかりますが、静かな場合は誤解を招くことがあります。コマンドラインからpmap -x <pid>
を使用してください。広がりを確認するのに役立ちます。
しばしばより良いユーティリティはfree
とvmstat
です。 free
は、現在の全体的なメモリ消費量の詳細を提供し、vmstatを使用して、更新されている頻度を確認できます。