我正在运行一个应用程序,它的最大堆大小为4g,-Xms4096m -Xmx4096m -Xmn1024m的GC配置为-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=50和Dsun.rmi.dgc.server.gcInterval=43200000 -Dsun.rmi.dgc.client.gcInterval=43200000的GC间隔。
突然,我的应用程序从内存异常中堆了出来,我在同一场合使用了线程转储和堆转储。在分析线程转储时,线程会因为为hashMap和arrayList创建一些值而陷入困境。ByteArrayOutStream在其中一个线程中创建了锁。
在分析eclipse内存分析器工具中的堆转储时,它清楚地指出bytearray对象已经占用了将近1G的堆。从GCViewer中可以看出,它有一个以秒为单位的峰值。我不知道为什么突然拜特数组对象使用了1G的空间。有人能帮我缩小罪魁祸首吗。
-应用服务器- Weblogic 12c
发布于 2016-10-12 07:57:44
在分析eclipse内存分析器工具中的堆转储时,它清楚地指出bytearray对象已经占用了将近1G的堆。
使用MAT的GC根特性的最短路径来查看哪些引用保存在该字节数组上。
https://stackoverflow.com/questions/39991714
复制相似问题