実行中のプロセスのヒープメモリを見つけるにはどうすればいいですか?

実行中のプロセスのヒープメモリを見つけるにはどうすればいいですか?

バックグラウンドで実行されているプロセスのヒープ メモリを見つける方法を知りたいです。それを可能にするコマンドはありますか?

答え1

例えば、特定のプロセスを見たい場合wing_ide

ps a | fgrep wing_ide | fgrep -v fgrep

行の先頭に番号が表示されます (私の場合は 29837)。この番号を次のように使用します。

fgrep '[heap]' /proc/29837/maps

出力は次のようになります。

01d56000-07026000 rw-p 00000000 00:00 0                       [heap]

これを定期的に行う場合は、次の Python プログラムを使用するとよいでしょう。

import sys
import psutil

for p in psutil.process_iter():
    if p.name == sys.argv[1]:
        print(pid)
        for map in p.get_memory_maps(grouped=False):
            if '[heap]' in map.path:
                print(map.addr)

検索するプロセスの名前を引数として指定するプログラム:

python findheap.py wing_ide

関連情報