运行中进程的内存泄露

原创 2017年05月21日 21:56:15
pmap <pid>
pmap -d <pid>

其中的10240是线程的堆栈,

pmap <pid>|grep 10240|wc 

应该和线程数一致,如果不一致,可能是有线程异常退出、或有线程退出时没有释放资源,或者有线程没启动。


找到可疑的内存块后,可以用gdb -p挂上进程,然后x/40a 0xaddr查看对应内存的数据

[root@localhost security]# pmap -d 4993
4993: -bash
Address Kbytes Mode Offset Device Mapping
08047000 596 r-x-- 0000000000000000 003:00006 bash bash的代码段
080dc000 28 rwx-- 0000000000094000 003:00006 bash bash的数据段
080e3000 280 rwx-- 00000000080e3000 000:00000 [ anon ] bash的堆
4d575000 84 r-x-- 0000000000000000 003:00006 ld-2.3.4.so 共享库的代码段
4d58a000 4 r-x-- 0000000000015000 003:00006 ld-2.3.4.so 共享库的数据段
4d58b000 4 rwx-- 0000000000016000 003:00006 ld-2.3.4.so 共享库的堆
4d58e000 1164 r-x-- 0000000000000000 003:00006 libc-2.3.4.so
4d6b1000 4 r-x-- 0000000000123000 003:00006 libc-2.3.4.so
4d6b2000 12 rwx-- 0000000000124000 003:00006 libc-2.3.4.so
4d6b5000 8 rwx-- 000000004d6b5000 000:00000 [ anon ] 匿名物理内存,
4d6de000 8 r-x-- 0000000000000000 003:00006 libdl-2.3.4.so
4d6e0000 8 rwx-- 0000000000001000 003:00006 libdl-2.3.4.so
4d807000 12 r-x-- 0000000000000000 003:00006 libtermcap.so.2.0.8
4d80a000 4 rwx-- 0000000000002000 003:00006 libtermcap.so.2.0.8
b7bc2000 176 r-x-- 0000000000000000 003:00006 GB18030.so
b7bee000 8 rwx-- 000000000002b000 003:00006 GB18030.so
b7bf0000 24 r-xs- 0000000000000000 003:00006 gconv-modules.cache
b7bf6000 1060 r-x-- 0000000002197000 003:00006 locale-archive
b7cff000 2048 r-x-- 0000000000000000 003:00006 locale-archive
b7eff000 36 r-x-- 0000000000000000 003:00006 libnss_files-2.3.4.so
b7f08000 8 rwx-- 0000000000008000 003:00006 libnss_files-2.3.4.so
b7f0a000 8 rwx-- 00000000b7f0a000 000:00000 [ anon ]
b7f20000 8 rwx-- 00000000b7f20000 000:00000 [ anon ]
bff0d000 84 rw--- 00000000bff0d000 000:00000 [ stack ]

ffffe000 4 ----- 0000000000000000 000:00000 [ anon ]

mapped: 5680K writeable/private: 460K shared: 24K


每列的含义如下:

参数 解释

Address:00378000-0038d000 进程所占的地址空间
Kbytes 该虚拟段的大小
RSS 设备号(主设备:次设备)
Anon 设备的节点号,0表示没有节点与内存相对应
Locked 是否允许swapped
Mode 权限:r=read, w=write, x=execute, s=shared, p=private(copy on write)
Mapping: bash 对应的映像文件名

相关文章推荐

使用JDK工具检查运行系统是否存在内存泄露

转自:http://crane-ding.iteye.com/blog/715450     首先在实验之前,先给大家介绍几个jdk自带的工具:  1. jps  查看所有java进程的pid的命令,...
  • spyiu
  • spyiu
  • 2015年09月30日 15:00
  • 1169

VC内存泄露检测之运行时库(CRT)

参考文献: 转载请注明出处:http://write.blog.csdn.net/postedit Memory leaks, defined as the failure to corre...
  • yf210yf
  • yf210yf
  • 2012年09月29日 10:34
  • 1205

Android Native进程内存泄露检测

Android Native进程内存泄露检测简介对于Android的native进程, Android源码中的Bionic库提供了一个很棒的API,get_malloc_leak_info用来检测Na...

Android中native进程内存泄露的调试技巧(一)

基于Android5.0版本 Android为Java程序提供了方便的内存泄露信息和工具(如MAT),便于查找。但是,对于纯粹C/C++ 编写的natvie进程,却不那么容易查找内存泄露。传统的C/C...
  • l_nan
  • l_nan
  • 2015年02月04日 18:03
  • 7530

Android 跨进程内存泄露

内存泄露的检测和修复一直是每个APP的重点和难点,也有很多文章讲述了如何检测和修复。本篇文章 结合最近开发的项目遇到的实例,讲述下Android Binder导致的内存泄露的一个案例。发现问题参与的...
  • skqcsy
  • skqcsy
  • 2016年07月11日 16:41
  • 543

Android中native进程内存泄露的调试技巧

Android中native进程内存泄露的调试技巧 红狼博客 代码基于Android2.3.x版本 Android为Java程序提供了方便的内存泄露信息和工具(如MAT),便于查找。但是...

Android进程与内存及内存泄露

来源:http://blog.csdn.net/hudashi/article/details/8451477 第一部分 Android进程 1.1、Android进程简介 ...
  • ruyi366
  • ruyi366
  • 2014年09月18日 19:51
  • 410

android 内存泄露 /进程 内存检查 --DDMS工具

一、监控操作步骤 1、打开eclipse,切换到DDMS模式,连接设备,打开usb调试,如图: 2、在devices栏中会显示连接的设备,选择要监控的程序包名 3、点击devices视图中up...

Android进程与内存及内存泄露

http://blog.csdn.net/hudashi/article/details/8451477 第一部分 Android进程 1.1、Android进程简介     每一个Andr...

Android 内存泄露

  • 2015年03月13日 11:52
  • 77KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:运行中进程的内存泄露
举报原因:
原因补充:

(最多只允许输入30个字)