缘由
需要获取某程序运行过程中的内存消耗,一般情况可以使用 top 命令来人工分析,不过我遇到一个程序其内部调用包括 python, R, 以及一系列 linux 命令,这就导致人工统计不太现实
问题变成统计进程及其子进程的内存使用...获取每个进程的ID和父进程ID及内存
维护一个表,记录与待查询进程相关的子进程及其内存,初始化只有待查询进程
遍历所有进程:
如果当前进程的父进程在表中:...将此进程及对应内存加入表
汇总表,得出总内存,并打印
这里细节是如何高效的更新表,可以将问题抽象为由一组边来构建树的过程,每个进程都有唯一的进程id(pid)和父进程id(ppid),正常来说一个系统所有的进程可以构建成一棵树...(linux系统上所有进程都是由其他进程fork来的),不过我们只想查询某个用户下的进程,因此结果会构建成多棵树,只要遍历找到某个树的某个节点为感兴趣的进程id,以此节点作为根节点,遍历整棵树汇总内存即为结果...17:37:09 1932
这里输出的内存单位是 KB
注意:由于需要进程启动之后才能开启监控,导致进程内存无法从0开始;当进程结束,则监控程序也会退出
关于结果展示,直接将输出结果的第二列和第三列拷贝到