内存问题及 top 命令,郁闷了两个多月了.高手请帮忙.

daehappy 2004-11-29 10:51:07
似乎top命令并不能实时反映内存的使用状况.
比如程序开始占用3M内存,我在程序里面隔十秒就成功地new10个类的实例,新占用的内存大概有几百k,但是top中看不到任何变化,还是3M.然后过了一段时间之后,我逐步delete这些实例,但是top也不会减少,还是3M.

这就给我的程序调试带来很大麻烦,因为我甚至不知道执行的哪些语句申请了内存,删除了内存.检查内存泄漏也就无从谈起了.

各位老大有什么意见吗?
...全文
190 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiger_net 2004-12-01
  • 打赏
  • 举报
回复
呵呵. 这个问题啊. 以前客户提过相同的问题, 认为我们的程序有内存泄漏.
所以研究过一下.
这是因为unix的内存管理机制, 当程序释放了申请的内存后, 这些内存并不是就
返给系统的, 而是放在一个类似的内存池里, 从而delete 内存后在top中并不显示
内存使用数量的下降. 当你下次再new 的时候, 只要不超过从前delete的内存
数量, top中显示的内存数量也不会涨. 这并不是个问题.

1. new 1M ->top中涨大概1M
2. delete 1M -> top中不变
3. new <1M -> top也不变

还有top也不应该用来检测内存泄漏的,因为top并不是那么准确. 要检查内存泄漏
还是应该用purify
conquer 2004-12-01
  • 打赏
  • 举报
回复
使用purifty.要是没有,到sun的网站上下载一个可以跟踪的库。
xfzhao_cn 2004-11-29
  • 打赏
  • 举报
回复
用mtrace 来测一下有没有内存泄漏把。
man mtrace
walkonthesky 2004-11-29
  • 打赏
  • 举报
回复
top有刷新时间的
WINDOWS的任务管理器也是有刷新时间的

完全实时反映内存占用的程序不大可能有
基本上都是近似检测
Brain1127 2004-11-29
  • 打赏
  • 举报
回复
top不是自动刷新的。使用空格键刷新下。
pacman2000 2004-11-29
  • 打赏
  • 举报
回复
是不是类里面采用了类似vector的方法,自动预先增长的?

23,127

社区成员

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

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