Linux用户进程内存泄露一种检测方法
来源:互联网 发布:中山大学网络教育平台 编辑:程序博客网 时间:2024/04/27 17:13
作者:夏斯华
像使用C/C++内存管理器不会帮我们自动回收不再使用的内存,如果忘记释放不再使用的内存而不能再被重用,就造成了所谓的内存泄露。
在Linux中,用户进程在/proc/{pid}/status文件中记录了该进程的内存使用实时情况。
*VmSize:
虚拟内存大小。
整个进程使用虚拟内存大小,是VmLib, VmExe, VmData, 和 VmStk的总和。
* VmLck:
虚拟内存锁。
进程当前使用的并且加锁的虚拟内存总数
* VmRSS:
虚拟内存驻留集合大小。
这是驻留在物理内存的一部分。它没有交换到硬盘。它包括代码,数据和栈。
* VmData:
虚拟内存数据。
堆使用的虚拟内存。
* VmStk:
虚拟内存栈
栈使用的虚拟内存
* VmExe:
可执行的虚拟内存
可执行的和静态链接库所使用的虚拟内存
* VmLib:
虚拟内存库
动态链接库所使用的虚拟内存
我们可以写个脚本,把你关注的进程或者所有的进程(ps –ef),的内存使用情况,主要针对VmSize,VmData,VmStk三个方面每隔比如3小时记录到进程号对应的文件中,每次记录下一个的时候,做个比较,如果发现最后一个记录点比第一个记录点小无内存泄露,如果大还需要与第二个记录点的大小(排除系统启动时的内存增长需要时间稳定下来),如果大的话就说明有内存泄露。还有记录点不要太多,比如30个,超过了就删除除了第一个记录点外的倒数第二个老的记录点。检测出内存泄露,可以打到异常日志中,供查看。
我们需要去查看那日志,发现有泄露,会看是什么原因的,至少可以知道是哪个进程的以及是栈还是堆上的,然后再分析代码…
- Linux用户进程内存泄露一种检测方法
- Linux用户进程内存泄露一种检测方法
- Linux用户进程内存泄露一种检测方法
- Linux用户进程内存泄露
- 一种基于libgds的简单内存泄露的检测方法
- linux下内存泄露检测方法
- linux下内存泄露检测方法
- 内存泄露检测方法
- 内存泄露检测方法
- 内存泄露检测方法
- Linux 内存泄露检测
- linux检测内存泄露
- linux C内存泄露检测实现及内存泄露检测的一般方法
- linux C内存泄露检测实现及内存泄露检测的一般方法
- 一种定位内存泄露的方法(Linux)
- 一种定位内存泄露的方法(Linux)
- 一种定位内存泄露的方法(Linux)
- 一种定位内存泄露的方法(Linux)
- C#观察者模式参考代码
- GNU-ld链接脚本浅析
- 王爽《汇编语言》(第二版) 学习笔记 (第一章 基础知识)
- Javascript MVC —— Class
- 【zz】ok6410上 使用DirecetFB支持Qt4.7.0
- Linux用户进程内存泄露一种检测方法
- flash builder 4 编译器参数
- [zz]mplayer configure选项中文注释(MPlayer-1.0rc2)
- 【zz】标题: 安装mplayer+ffmpeg-mt+CorAVC 2.0成功,发帖纪念!
- 包含库的问题
- 鸭梨很大
- 写在前进的路上
- 【zz】Linux 安装FFmpeg
- ASP.Net ViewState的实现