我有一个系统(Ubuntu)有许多进程,一个(或多个)有内存泄漏.有没有找到泄漏过程的好方法?有些过程是JVM,有些则不是.有些是自家种植的,有些是开源的.
Ada*_*eld 14
您可以运行该top命令(以非交互方式运行,键入top -b -n 1).要查看泄漏内存的应用程序,请查看以下列:
如果程序长时间泄漏,top可能不实用.我会编写一个简单的shell脚本,每隔X秒将"ps aux"的结果附加到一个文件中,具体取决于泄漏大量内存所需的时间.就像是:
while true
do
echo "---------------------------------" >> /tmp/mem_usage
date >> /tmp/mem_usage
ps aux >> /tmp/mem_usage
sleep 60
done
Run Code Online (Sandbox Code Playgroud)
除了top之外,您还可以使用系统监视器(系统 - 管理 - 系统监视器,然后选择进程选项卡).选择View - All Processes,转到Edit - Preferences并启用Virtual Memory列.按此列或"内存"列排序
如果你不能用演绎法来做,考虑一下 Signal Flare 调试模式:将一个进程分配的内存量增加 10 倍。然后运行你的程序。
如果泄漏的内存量相同,则该进程不是泄漏源;恢复流程并对下一个流程进行相同的修改。
当您点击负责的进程时,您将看到内存泄漏跳跃的大小(“信号耀斑”)。您可以通过有选择地增加此过程中单独语句的分配大小来进一步缩小范围。
| 归档时间: |
|
| 查看次数: |
104226 次 |
| 最近记录: |