如何找到正在运行的进程的堆内存?

Tip*_*ppu 10 process memory

我想知道如何找到在后台运行的进程的堆内存。有没有允许这样的命令?

Ant*_*hon 12

如果您想查看名为 eg 的特定进程wing_ide,则

ps a | fgrep wing_ide | fgrep -v fgrep
Run Code Online (Sandbox Code Playgroud)

在行的开头给你一个数字(在我的例子中是 29837)使用这个数字如下:

fgrep '[heap]' /proc/29837/maps
Run Code Online (Sandbox Code Playgroud)

输出看起来像:

01d56000-07026000 rw-p 00000000 00:00 0                       [heap]
Run Code Online (Sandbox Code Playgroud)

如果您定期执行此操作,您可能需要使用以下 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)
Run Code Online (Sandbox Code Playgroud)

将要搜索的进程名称作为参数提供给哪个程序:

python findheap.py wing_ide
Run Code Online (Sandbox Code Playgroud)