web-dev-qa-db-ja.com

実行中のプロセスのヒープメモリを見つける方法は?

バックグラウンドで実行されているプロセスのヒープメモリを見つける方法を教えてください。そのようなことができるコマンドはありますか?

9
Tippu

たとえば、特定のプロセスを確認したい場合は、 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 pid in psutil.get_pid_list():
    p = psutil.Process(pid)
    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
11
Anthon