jae*_*ong 15 java eclipse jvm memory-leaks heap-dump
我正在经历内存泄漏,这里有一些细节.
__PRE__
我很惊讶顶部,堆转储大小和实际堆大小之间的差异.我猜测顶部和堆之间的区别是垃圾收集器堆和本机堆区域的可能性.但是,为什么堆转储文件大小和实际堆大小(来自eclipse MAT分析器)可能会有所不同?
对这个问题的任何见解?
更新/答案
一些建议是使用jcmd(https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr007.html),因为该网站告诉"本机内存跟踪".但是,如果你仔细阅读页面,你会看到
__PRE__
因此,如果本机库中存在泄漏,则jcmd不是一个选项.
在爬行互联网几天并尝试各种剖析器之后,对这个问题最有效的方法是使用jemalloc剖面仪.
这个页面对我帮助很大! https://gdstechnology.blog.gov.uk/2015/12/11/using-jemalloc-to-get-to-the-bottom-of-a-memory-leak/
我也经历过类似的情况。差异(HPROF 文件大小 - MAT 指示的堆大小)实际上是垃圾(无法访问的对象)。MAT 中无法到达的对象直方图应该对此有所帮助。
jmap -F -dump:live,format=b,file=<file_name.hprof> <process_id>只会转储活动对象而不是垃圾。
| 归档时间: |
|
| 查看次数: |
1597 次 |
| 最近记录: |