0

Linux でプロセスのスレッドごとのメモリ消費量を取得するにはどうすればよいですか? /proc/pid/task/tid/statm を使用できることは理解していますが、それは私の場合には役に立ちません。すべてのスレッドが同じ値を示し、PID の statm と同じです。

valgrind を実行できますが、無効な読み取り/書き込みやリークを探していません。Valgrind は、スレッド レベルの情報を教えてくれません。

他の提案はありますか?

編集:コードをプロファイリングするにはどうすればよいですか? どの関数/行番号などにどのくらいのメモリが割り当てられましたか?

4

2 に答える 2

3

すべてのスレッドは同じアドレス空間を共有し、同じヒープを使用するため、スタックを除いて、すべて同じメモリ使用量を示すはずです。

于 2009-10-14T17:01:31.633 に答える
0

Linux には、CPU とメモリのスレッド レベルの使用状況を確認するオプションがあります。

topオプション-Hと一緒にコマンドを使用できます-p

top -H -p<PID>

コマンドは、次のヘッダーで結果を一覧表示しますPID。この場合、TID (スレッド ID) として読み取る必要があります。

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND`

Javaプロセスの場合、次のように非常に明白です。プロセスのスレッド ダンプを作成し、スレッド ID を 10 進数に変換すると、出力にリストされている TID と一致させることができます。top -H -p <PID>

為に

于 2016-07-14T19:17:10.560 に答える