堆转储分析 - 查找OutOfMemory异常的根本原因

时间:2016-10-12 06:19:39

标签: java garbage-collection heap-memory eclipse-memory-analyzer

我正在运行一个应用程序,其中有4个最大堆大小-Xms4096m -Xmx4096m -Xmn1024m,GC配置为-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=50且GC间隔为Dsun.rmi.dgc.server.gcInterval=43200000 -Dsun.rmi.dgc.client.gcInterval=43200000

突然我的应用程序转到堆内存异常,我在同一场合进行了线程转储和堆转储。在分析线程转储时,由于为hashMap和arrayList创建了一些值,线程会被卡住。 ByteArrayOutStream已经在其中一个线程中创建了锁。

在eclipse内存分析器工具中分析Heap转储时,它清楚地表明bytearray对象占用了几乎1 Gigs of Heap。从GCViewer可以看出它的峰值只有几分之一秒。我很清楚为什么突然Byte数组对象使用1 Gigs的空间。有人可以帮助我缩小罪魁祸首。

- Application Server - Weblogic 12c

1 个答案:

答案 0 :(得分:0)

  

在eclipse内存分析器工具中分析Heap转储时,它清楚地表明bytearray对象占用了近1 Gigs的堆。

使用MAT的GC根特征的最短路径来查看哪些引用保留在该字节数组上。

相关问题