我正在运行一个应用程序,该应用程序具有 4 gigs 的最大堆大小-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 内存分析器工具中的 Analyzing Heap dump 中,它清楚地表明 bytearray 对象已经占用了将近 1 Gigs 的 Heap。从 GCViewer 显示它在几分之一秒内有一个峰值。我不知道为什么突然字节数组对象使用了 1 Gigs 的空间。有人可以帮我缩小罪魁祸首。
-- 应用服务器 - Weblogic 12c