在weblogic JRockit中,有时堆会变满(使用量达到堆最大大小4096M)。但是,在我们转储堆之后,转储文件大小只有200~300M。这很奇怪,最重要的是,我们无法通过 EMA 工具识别哪些对象占用了堆。
有没有人经历过类似的经历,有人知道JRockit堆转储机制吗?
每当您进行堆转储时,都会运行一个完整的 GC,然后堆将被转储。可能这就是堆转储大小非常小的原因。
如果要分析完整GC之间的内存泄漏,那么使用Java分析器(Mission Control,jProfiler等)进行内存分析可能是您唯一的选择。