VJS*_*VJS 5 java memory garbage-collection java-ee
我看到我的应用程序/平台内存利用率突然飙升.在GC详细日志中我看到如下:
1285.946:[GC 1285.946:[ ParNew(促销失败):353920K-> 353920K(353920K),0.8003983秒] 1286.747:[CMS1287.338:[CMS-con current-sweep:7.902/9.624 secs] [次:用户= 96.62 sys = 2.35,real = 9.62 secs](并发模式故障):2531317K-> 1161025K(2752512K),24.8330303 secs] 2860005K-> 1161025K(3106432K),[CMS Perm:37117K-> 3 6905K(62368K)],25.6341706 secs ] [时间:用户= 26.41 sys = 0.05,实际= 25.63秒] [POA RootPOA - 摆脱:17 oid:00 17 2E 29 23 33 49 34 25 3E opname:ping - 处理请求] 1312.367:[GC 1312.367:[ParNew] :314624K-> 30240K(353920K),0.0188874秒] 1475649K-> 1191266K(3106432K),0.0194380秒] [时间s:用户= 0.40 sys = 0.00,实际= 0.02秒] 1313.249:[GC 1313.249:[ParNew:344864K- > 39296K(353920K),0.0300220秒] 1505890K-> 1201198K(3106432K),0.0305488秒]
ParNew(促销失败),并发模式失败:请解释和如何解决这个问题.我相信由于GC故障,内存中突然出现峰值.
请求您的意见.
Leo*_*hen 15
"ParNew(促销失败)"意味着,有一些年轻一代的物品将被提升为老一代,但没有足够的空间.也许旧的空间几乎已满,或者推广的对象太大了,并且没有足够的继续空间.
简单的解决方案,就是尝试增加老一代的规模.或者你可以尝试使用G1算法,它可以减少老一代的碎片问题.
如果两种方法都无法解决您的问题,则可能需要检查代码,以减小单个对象的大小.
只需2美分,
最诚挚的问候,莱昂
从可见的行来看,我假设您的应用程序代码创建了太多垃圾对象。CMS 故障 Full GC 能够收集 1.4GB 的垃圾。所以这不是碎片问题,而是CMS没有跟上的问题。[CMS perm] 让我很好奇你的 GC 设置是什么。也许您可以为 CMS 提供更多的 CPU 来运行?或者你可以扩大新空间以避免过早升级到旧空间。
但很可能您运行的代码效率低下。我会在其上附加一个分析器并寻找垃圾分配热点。