免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4128 | 回复: 3
打印 上一主题 下一主题

[C] Linux C如何排查指定进程地址内存占用过大的原因 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-05-06 18:06 |只看该作者 |倒序浏览
写了个程序,需要长期运行,用pmap -d $PID查看到内存占用达到80M,而目标是控制在20M以内,故需要找出内存占用过多的原因。
占用物理内存: 83520K
mapped: 194864K    writeable/private: 83520K    shared: 0K

看pmap的结果,其中一个地址上占用了
00002aaaac06c000   65104 ----- 00002aaaac06c000 000:00000   [ anon ]

还有几个占用比较大的:
0000000040fd3000   10240 rw--- 0000000040fd3000 000:00000   [ anon ]

请教下有经验的前辈,如何才能根据前面的地址找出对应的源码行或者变量呢?比如上面占用了65104K虚拟内存的地址<00002aaaac06c000>,用什么办法查找出对应的源码行或者变量?


以下为pmap -d $PID的结果:
[root@rh5ora1 RHEL5.8]# pmap -d 26578
26578:   /development/monitor-product/SourceCode/agent_src/Linux/RHEL5.8/agentstart --mode=normal --init_xml=/development/monitor-product/SourceCode/agent_src/Linux/RHEL5.8/config/config_main/initialization_main.xml --daemon_program=/development/monitor-product/SourceCode/agent_src/Linux/RHEL5.8/bin/cesmond
Address           Kbytes Mode  Offset           Device    Mapping
0000000000400000     132 r-x-- 0000000000000000 008:00002 agentstart
0000000000620000      16 rw--- 0000000000020000 008:00002 agentstart
0000000000624000      48 rw--- 0000000000624000 000:00000   [ anon ]
0000000018a94000     580 rw--- 0000000018a94000 000:00000   [ anon ]
00000000405d1000       4 ----- 00000000405d1000 000:00000   [ anon ]
00000000405d2000   10240 rw--- 00000000405d2000 000:00000   [ anon ]
0000000040fd2000       4 ----- 0000000040fd2000 000:00000   [ anon ]
0000000040fd3000   10240 rw--- 0000000040fd3000 000:00000   [ anon ]
00000000419d3000       4 ----- 00000000419d3000 000:00000   [ anon ]
00000000419d4000   10240 rw--- 00000000419d4000 000:00000   [ anon ]
00000000423d4000       4 ----- 00000000423d4000 000:00000   [ anon ]
00000000423d5000   10240 rw--- 00000000423d5000 000:00000   [ anon ]
0000000042dd5000       4 ----- 0000000042dd5000 000:00000   [ anon ]
0000000042dd6000   10240 rw--- 0000000042dd6000 000:00000   [ anon ]
00000000437d6000       4 ----- 00000000437d6000 000:00000   [ anon ]
00000000437d7000   10240 rw--- 00000000437d7000 000:00000   [ anon ]
00000000441d7000       4 ----- 00000000441d7000 000:00000   [ anon ]
00000000441d8000   10240 rw--- 00000000441d8000 000:00000   [ anon ]
0000000045fda000       4 ----- 0000000045fda000 000:00000   [ anon ]
0000000045fdb000   10240 rw--- 0000000045fdb000 000:00000   [ anon ]
0000003c3e200000     112 r-x-- 0000000000000000 008:00001 ld-2.5.so
0000003c3e41c000       4 r---- 000000000001c000 008:00001 ld-2.5.so
0000003c3e41d000       4 rw--- 000000000001d000 008:00001 ld-2.5.so
0000003c3e600000    1340 r-x-- 0000000000000000 008:00001 libc-2.5.so
0000003c3e74f000    2044 ----- 000000000014f000 008:00001 libc-2.5.so
0000003c3e94e000      16 r---- 000000000014e000 008:00001 libc-2.5.so
0000003c3e952000       4 rw--- 0000000000152000 008:00001 libc-2.5.so
0000003c3e953000      20 rw--- 0000003c3e953000 000:00000   [ anon ]
0000003c3ea00000     520 r-x-- 0000000000000000 008:00001 libm-2.5.so
0000003c3ea82000    2044 ----- 0000000000082000 008:00001 libm-2.5.so
0000003c3ec81000       4 r---- 0000000000081000 008:00001 libm-2.5.so
0000003c3ec82000       4 rw--- 0000000000082000 008:00001 libm-2.5.so
0000003c3ee00000       8 r-x-- 0000000000000000 008:00001 libdl-2.5.so
0000003c3ee02000    2048 ----- 0000000000002000 008:00001 libdl-2.5.so
0000003c3f002000       4 r---- 0000000000002000 008:00001 libdl-2.5.so
0000003c3f003000       4 rw--- 0000000000003000 008:00001 libdl-2.5.so
0000003c3f200000      80 r-x-- 0000000000000000 008:00001 libz.so.1.2.3
0000003c3f214000    2044 ----- 0000000000014000 008:00001 libz.so.1.2.3
0000003c3f413000       4 rw--- 0000000000013000 008:00001 libz.so.1.2.3
0000003c3f600000      88 r-x-- 0000000000000000 008:00001 libpthread-2.5.so
0000003c3f616000    2044 ----- 0000000000016000 008:00001 libpthread-2.5.so
0000003c3f815000       4 r---- 0000000000015000 008:00001 libpthread-2.5.so
0000003c3f816000       4 rw--- 0000000000016000 008:00001 libpthread-2.5.so
0000003c3f817000      16 rw--- 0000003c3f817000 000:00000   [ anon ]
0000003c42600000      28 r-x-- 0000000000000000 008:00001 librt-2.5.so
0000003c42607000    2048 ----- 0000000000007000 008:00001 librt-2.5.so
0000003c42807000       4 r---- 0000000000007000 008:00001 librt-2.5.so
0000003c42808000       4 rw--- 0000000000008000 008:00001 librt-2.5.so
0000003c43e00000      52 r-x-- 0000000000000000 008:00001 libgcc_s-4.1.2-20080825.so.1
0000003c43e0d000    2048 ----- 000000000000d000 008:00001 libgcc_s-4.1.2-20080825.so.1
0000003c4400d000       4 rw--- 000000000000d000 008:00001 libgcc_s-4.1.2-20080825.so.1
0000003c44a00000     920 r-x-- 0000000000000000 008:00001 libstdc++.so.6.0.8
0000003c44ae6000    2044 ----- 00000000000e6000 008:00001 libstdc++.so.6.0.8
0000003c44ce5000      24 r---- 00000000000e5000 008:00001 libstdc++.so.6.0.8
0000003c44ceb000      12 rw--- 00000000000eb000 008:00001 libstdc++.so.6.0.8
0000003c44cee000      72 rw--- 0000003c44cee000 000:00000   [ anon ]
0000003c49600000    1228 r-x-- 0000000000000000 008:00001 libxml2.so.2.6.26
0000003c49733000    2048 ----- 0000000000133000 008:00001 libxml2.so.2.6.26
0000003c49933000      36 rw--- 0000000000133000 008:00001 libxml2.so.2.6.26
0000003c4993c000       4 rw--- 0000003c4993c000 000:00000   [ anon ]
00002aaaaaaab000       4 rw--- 00002aaaaaaab000 000:00000   [ anon ]
00002aaaac000000     432 rw--- 00002aaaac000000 000:00000   [ anon ]
00002aaaac06c000   65104 ----- 00002aaaac06c000 000:00000   [ anon ]
00002b5519695000     148 rw--- 00002b5519695000 000:00000   [ anon ]
00002b55196bc000     108 r-x-- 0000000000000000 008:00001 liblog4c.so.3.3.0
00002b55196d7000    2044 ----- 000000000001b000 008:00001 liblog4c.so.3.3.0
00002b55198d6000       4 rw--- 000000000001a000 008:00001 liblog4c.so.3.3.0
00002b55198d7000       8 rw--- 00002b55198d7000 000:00000   [ anon ]
00002b55198d9000       8 r-x-- 0000000000000000 008:00002 libmessage.so
00002b55198db000    2048 ----- 0000000000002000 008:00002 libmessage.so
00002b5519adb000       4 rw--- 0000000000002000 008:00002 libmessage.so
00002b5519adc000       8 rw--- 00002b5519adc000 000:00000   [ anon ]
00002b5519ade000       4 r-x-- 0000000000000000 008:00002 libmain.so
00002b5519adf000    2048 ----- 0000000000001000 008:00002 libmain.so
00002b5519cdf000       4 rw--- 0000000000001000 008:00002 libmain.so
00002b5519ce0000      12 rw--- 00002b5519ce0000 000:00000   [ anon ]
00002b5519ce3000     260 r-x-- 0000000000000000 008:00001 libzmq.so.3.0.0
00002b5519d24000    2048 ----- 0000000000041000 008:00001 libzmq.so.3.0.0
00002b5519f24000      20 rw--- 0000000000041000 008:00001 libzmq.so.3.0.0
00002b5519f29000      56 r-x-- 0000000000000000 008:00001 libprotobuf-c.so.0.0.0
00002b5519f37000    2048 ----- 000000000000e000 008:00001 libprotobuf-c.so.0.0.0
00002b551a137000       4 rw--- 000000000000e000 008:00001 libprotobuf-c.so.0.0.0
00002b551a138000     248 r-x-- 0000000000000000 008:00001 libczmq.so.1.1.0
00002b551a176000    2044 ----- 000000000003e000 008:00001 libczmq.so.1.1.0
00002b551a375000       8 rw--- 000000000003d000 008:00001 libczmq.so.1.1.0
00002b551a377000      12 rw--- 00002b551a377000 000:00000   [ anon ]
00002b551a37a000      16 r-x-- 0000000000000000 008:00001 libuuid.so.1.2
00002b551a37e000    2044 ----- 0000000000004000 008:00001 libuuid.so.1.2
00002b551a57d000       4 rw--- 0000000000003000 008:00001 libuuid.so.1.2
00002b551a57e000       8 rw--- 00002b551a57e000 000:00000   [ anon ]
00007fff759d2000      84 rw--- 00007ffffffe9000 000:00000   [ stack ]
00007fff759fd000      12 r-x-- 00007fff759fd000 000:00000   [ anon ]
ffffffffff600000    8192 ----- 0000000000000000 000:00000   [ anon ]
mapped: 194864K    writeable/private: 83520K    shared: 0K
[root@rh5ora1 RHEL5.8]#


论坛徽章:
0
2 [报告]
发表于 2015-05-07 08:48 |只看该作者
哪位朋友有排查C语言内存占用过大的经验请指点,提供方法和工具更是感谢。

论坛徽章:
0
3 [报告]
发表于 2015-11-27 11:51 |只看该作者
用gdb attached上去,调用 call malloc_stats 看究竟是啥情况

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
4 [报告]
发表于 2015-11-30 09:17 |只看该作者
试试valgrind
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP