Java 系统内存泄漏定位

2019-10-10 16:00:29 +08:00
 csidez

系统运行久了就会崩溃,有没有办法定位是什么地方内存泄漏导致的? 有什么案例可以参考一下嘛

2562 次点击
所在节点    程序员
10 条回复
xaoduer
2019-10-10 16:10:51 +08:00
内存泄露不是有 OOM 日志吗
arrow8899
2019-10-10 16:14:55 +08:00
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp
dump 出来后直接上 mat 分析
xionghongzhi
2019-10-10 16:22:21 +08:00
你可以在它出现问题的时候, jstack 查看下具体哪里有问题.

jstack -l pid > xx.dump

然后找一下里面有没有你写的代码...
yidinghe
2019-10-10 16:23:35 +08:00
https://segmentfault.com/a/1190000020513539
看这篇文章,介绍内存分析工具的使用。如果想了解内存结构和垃圾回收,请从头看完该篇文章的整个系列。
csidez
2019-10-10 16:25:44 +08:00
@arrow8899 感谢
aguesuka
2019-10-10 16:47:36 +08:00
jmap 可以看类的内存占用
luozic
2019-10-10 18:02:36 +08:00
现在有 GUI 的也有命令行的,刚开始玩推荐用 GUi 的定位,jprofiler 等等
zazalu
2019-10-10 18:24:04 +08:00
太大的系统 dump 要半天呢。
timepast
2019-10-10 21:06:14 +08:00
上面的方式应该能解决,我们前两天刚定位了相关问题
Raymon111111
2019-10-10 21:31:44 +08:00
最直接的方法是分析 dump 堆文件, 看看有什么不太符合预期类

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/607922

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX