我有一个系统(Ubuntu)有许多进程,一个(或多个)有内存泄漏.有没有找到泄漏过程的好方法?有些过程是JVM,有些则不是.有些是自家种植的,有些是开源的.
您可以运行该top
命令(以非交互方式运行,键入top -b -n 1
).要查看泄漏内存的应用程序,请查看以下列:
RPRVT - 驻留私人地址空间大小
RSHRD - 驻留共享地址空间大小
RSIZE - 常驻内存大小
VPRVT - 私有地址空间大小
VSIZE - 总内存大小
如果程序长时间泄漏,top可能不实用.我会编写一个简单的shell脚本,每隔X秒将"ps aux"的结果附加到一个文件中,具体取决于泄漏大量内存所需的时间.就像是:
while true do echo "---------------------------------" >> /tmp/mem_usage date >> /tmp/mem_usage ps aux >> /tmp/mem_usage sleep 60 done
除了top之外,您还可以使用系统监视器(系统 - 管理 - 系统监视器,然后选择进程选项卡).选择View - All Processes,转到Edit - Preferences并启用Virtual Memory列.按此列或"内存"列排序