小春网

 找回密码
 注册账号
查看: 2175|回复: 19
收起左侧

[IT 交流] 在Linux,程序内存泄露的时候,怎么调查

[复制链接]
发表于 2013-4-13 16:26:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

x
有一个Java程序,里面调用用到了一些C的API(这个API是别的公司的产品)。
现在发生了内存泄露。想调查原因。
目前的分析结果是 可能性有2个。
1。API本身有问题。
2。API的调用方法有问题。

要找到问题的根源,有什么好的办法么?
除了看内存的使用量,还有什么其他观点来看内存?

先谢过了。
发表于 2013-4-13 22:56:53 | 显示全部楼层
迷糊的一点儿初步建议

Java有垃圾回收机制,相对来讲内存泄漏的可能性比较小

如果怀疑是C的API内部的问题,建议别途制作一个小程序,大量重复的调用怀疑有问题的程序,如果发生了问题,就基本上可以仲裁是哪部分的问题了

如果怀疑是调用方法不正确,最好再查找一些文档,比如如果API成对提供了类似于new和delete的操作
就需要检查,自己的程序里是否适当的调用了delete

至于调查方法,如果能把内存适当的dump下来,在某些位置故意设置一些标志,可能对问题的分析也会有所帮助

另外,因为Java的垃圾回收并不是实时的,如果能够显式的自己回收内存也挺好

系统得长时间运行,最终内存枯竭了,才算真正的内存泄漏;如果仅仅是没有显式回收内存,虚拟机仅会在所有引用全部失效时才会考虑回收;不会是这种问题吧

如果是在网上很容易找到的公版程序,可以把示例代码贴出来,大家一起研究
如果有情报安全的问题,就算了
回复

使用道具 举报

头像被屏蔽
发表于 2013-4-14 01:55:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

 楼主| 发表于 2013-4-14 12:17:43 | 显示全部楼层
憨吃迷糊睡 发表于 2013-4-13 22:56
迷糊的一点儿初步建议

Java有垃圾回收机制,相对来讲内存泄漏的可能性比较小

java启动时指定的heapsize只有2G,  但是程序运行过程中使用内存不断增加. 每天重新启动前, 达到最高点5G以上.
所以应该是Java以外的部分出现了, 内存泄露.

>至于调查方法,如果能把内存适当的dump下来,
>在某些位置故意设置一些标志,可能对问题的分析也会有所帮助

这个调查方法能具体描述一下么?
回复

使用道具 举报

 楼主| 发表于 2013-4-14 12:29:25 | 显示全部楼层
coka2cora 发表于 2013-4-14 01:55
java和c的最大区别就是是否主动释放内存,我怀疑java没有释放c的资源,这样java的垃圾回收机能也对调用该资 ...

最早我也怀疑Java的部分内存泄露,
但是通过jstat的调查, 发现了Java部分的内存管理的很好, 没有可疑之处。

已经上线多年的一个系统了,在没有明确的找到原因之前,没法尝试修改API的调用方法。
而且API还是别的公司的。。。

----------
题外话
一直都知道这个程序的内存使用有问题,直到前两天,搭载这个程序的服务器,kernel panic挂了,影响特别大。这才开始调查。
回复

使用道具 举报

头像被屏蔽
发表于 2013-4-14 23:01:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

 楼主| 发表于 2013-4-15 12:48:59 | 显示全部楼层
coka2cora 发表于 2013-4-14 23:01
因为不清楚你们的环境具体参数,不好说太具体,我能想到的方法也就是最传统的:
使用log进行记录,API的调 ...

谢谢意见, 等有什么新的进展了, 再来汇报.
回复

使用道具 举报

发表于 2013-4-18 17:58:43 | 显示全部楼层
在调用是,有内存的使用的话
内存是由哪方分配的,如果是java分配的,java必须
负责释放。也就是有始有终原则。
回复

使用道具 举报

 楼主| 发表于 2013-4-19 09:18:45 | 显示全部楼层
yangqiansheng 发表于 2013-4-18 17:58
在调用是,有内存的使用的话
内存是由哪方分配的,如果是java分配的,java必须
负责释放。也就是有始有终原 ...

然后呢?

出问题后应该怎么调查?
回复

使用道具 举报

发表于 2013-4-19 21:50:08 | 显示全部楼层
你分配的内存你是否确实释放了。如果做了。那就api的问题。
一般,Api给你提供结口释放内存的作法也有。你是否掉用了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小春网
常务客服微信
微信订阅号
手机客户端
扫一扫,查看更方便! 快速回复 返回顶部 返回列表