当前位置:  开发笔记 > 编程语言 > 正文

我如何找到泄漏内存的进程

如何解决《我如何找到泄漏内存的进程》经验,为你挑选了3个好方法。

我有一个系统(Ubuntu)有许多进程,一个(或多个)有内存泄漏.有没有找到泄漏过程的好方法?有些过程是JVM,有些则不是.有些是自家种植的,有些是开源的.



1> Adam Rosenfi..:

您可以运行该top命令(以非交互方式运行,键入top -b -n 1).要查看泄漏内存的应用程序,请查看以下列:

RPRVT - 驻留私人地址空间大小

RSHRD - 驻留共享地址空间大小

RSIZE - 常驻内存大小

VPRVT - 私有地址空间大小

VSIZE - 总内存大小


我正在尝试这个,但无论我传递到顶部的命令行参数,它都没有给出具有此信息的输出.我得到像'PID用户PR NI VIRT RES SHR S%CPU%MEM TIME + COMMAND`.有关如何获得所需输出的任何建议吗?

2> Dprado..:

如果程序长时间泄漏,top可能不实用.我会编写一个简单的shell脚本,每隔X秒将"ps aux"的结果附加到一个文件中,具体取决于泄漏大量内存所需的时间.就像是:

while true
do
echo "---------------------------------" >> /tmp/mem_usage
date >> /tmp/mem_usage
ps aux >> /tmp/mem_usage
sleep 60
done



3> dmityugov..:

除了top之外,您还可以使用系统监视器(系统 - 管理 - 系统监视器,然后选择进程选项卡).选择View - All Processes,转到Edit - Preferences并启用Virtual Memory列.按此列或"内存"列排序

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有