程序占用很大的内存

aflyinghorse 2007-10-10 02:21:12
一个在solaris下的程序,运行很长时间, 占用的内存很大,约2G, 用purify查不出内存泄漏。
solaris的内存管理机制是等到系统的内存比较小时,才启动page scanner线程进行回收。所以怀疑
我的程序并没有占2G,只不过程序释放的内存没有被solaris回收而已。
我的问题是怎样才能看到程序真实占用的内存是多少, 已经释放但没有被solaris回收的内存是多少?
用相关的命令吗? 谢谢。
...全文
357 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
aflyinghorse 2007-10-18
  • 打赏
  • 举报
回复
有什么方法可以减少程序所占虚拟内存吗?
aflyinghorse 2007-10-16
  • 打赏
  • 举报
回复
UP
aflyinghorse 2007-10-15
  • 打赏
  • 举报
回复
有人能解释一下solaris的内存回收机制吗?
swap和page scanner两种机制什么时候起作用?
zeloas 2007-10-12
  • 打赏
  • 举报
回复
用dtrace动态跟踪
aflyinghorse 2007-10-12
  • 打赏
  • 举报
回复
怎么看系统设置缓存阀值?
hefuhua 2007-10-12
  • 打赏
  • 举报
回复
应该正常的,看你系统有设置缓存阀值是不是很大..
aflyinghorse 2007-10-11
  • 打赏
  • 举报
回复
我写了一个小程序测试了一下。程序A分配了大量的内存, 然后全部释放。然后这个程序处于sleep状态
这是prstat的结果:
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
1301 liangzh 2677M 2676M sleep 59 0 0:10:04 0.0% testmap_swap/1


这时启动另一个程序B不停的分配内存, 可以看到A的RSS在不停的减少, 但是SIZE却没有变化。

为什么会出现这样的现象?
dai_weitao 2007-10-11
  • 打赏
  • 举报
回复
正常现象吧.
aflyinghorse 2007-10-11
  • 打赏
  • 举报
回复
试了一下sync, 没什么变化
还是占很大内存
aflyinghorse 2007-10-11
  • 打赏
  • 举报
回复
pmap -xs 6561
6561: testmap_swap
Address Kbytes RSS Anon Locked Pgsz Mode Mapped File
00010000 224 224 - - 8K r-x-- testmap_swap
00056000 16 16 16 - 8K rwx-- testmap_swap
0005A000 2739208 2739208 2739208 - 8K rwx-- [ heap ]
FF200000 136 136 - - 8K r-x-- libc.so.1
FF222000 8 8 - - - r-x-- libc.so.1
FF224000 128 128 - - 8K r-x-- libc.so.1
FF244000 8 8 - - - r-x-- libc.so.1
FF246000 64 64 - - 8K r-x-- libc.so.1
FF256000 48 48 - - - r-x-- libc.so.1
FF262000 120 120 - - 8K r-x-- libc.so.1
FF280000 88 88 - - - r-x-- libc.so.1
FF296000 88 88 - - 8K r-x-- libc.so.1
FF2BC000 24 24 24 - 8K rwx-- libc.so.1
FF2C2000 8 8 8 - 8K rwx-- libc.so.1
FF310000 8 8 - - 8K r-x-- libc_psr.so.1
FF31A000 8 8 8 - 8K rwx-- libdl.so.1
FF320000 8 8 8 - 8K rwx-- [ anon ]
FF330000 64 64 - - 8K r-x-- libm.so.1
FF340000 160 160 - - - r-x-- libm.so.1
FF376000 8 8 8 - 8K rwx-- libm.so.1
FF380000 48 48 - - 8K r-x-- libCrun.so.1
FF39A000 8 8 8 - 8K rwx-- libCrun.so.1
FF39C000 16 - - - - rwx-- libCrun.so.1
FF3B0000 8 8 - - 8K r-x-- libw.so.1
FF3C0000 192 192 - - 8K r-x-- ld.so.1
FF3F0000 8 8 8 - 8K rwx-- ld.so.1
FF3F2000 8 8 8 - 8K rwx-- ld.so.1
FFBFA000 24 24 24 - 8K rw--- [ stack ]
-------- ------- ------- ------- -------
total Kb 2740736 2740720 2739328 -
shgmail 2007-10-11
  • 打赏
  • 举报
回复
在new的地方做上记录,释放时也记录下,然后看看是怎么回事
wangling21908 2007-10-10
  • 打赏
  • 举报
回复
SYNC试下,不是很懂

帮顶
hefuhua 2007-10-10
  • 打赏
  • 举报
回复
同步下sync命令试试..
NC 2007-10-10
  • 打赏
  • 举报
回复
占用的内存是一直在增加么?还是一直固定在2G?如果是前者,很有可能是内存泄露,任何内存检查工具不是所有的泄露情况都能检查出来的。
linux_is_perfect 2007-10-10
  • 打赏
  • 举报
回复
不是很清楚, 关注, 帮顶

学习
aflyinghorse 2007-10-10
  • 打赏
  • 举报
回复
UP

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧