我有一个遗留应用程序,其GC日志反复显示频繁的分配失败。(GC模式是并行标记扫描) 堆转储很大(~7.5G)。有没有办法从命令行分析堆转储文件?(要在远程ssh会话中执行此操作而不将大堆转储下载到本地计算机,不启用X11端口转发)
根据我的理解,下面的日志表明有很多新对象被创建并被垃圾收集。我有堆转储文件。我试过Jhat,这花了太长时间没有响应和MAT甚至内存不足使用Xmx 6g。 关于如何找到罪魁祸首对象的任何建议?
以下是日志的片段
2015-12-09T21:07:32.911 + 0000:29565.425:[GC(分配失败) 29565.425:[ParNew:383424K-> 42560K(383424K),1.4270759 secs] 4776398K-> 4744049K(6248896K),1.4273264 secs] [次:用户= 2.54 sys = 0.00,real = 1.42 secs] 2015-12-09T21:07:34.338 + 0000:29566.852: 应用程序线程停止的总时间:1.4381753 秒,停止线程:0.0098894秒 2015-12-09T21:07:34.339 + 0000:29566.853:[GC(CMS初始标记)[1 CMS初始标记:4701489K(5865472K)] 4746653K(6248896K),0.0663050 secs] [次:用户= 0.09 sys = 0.00,real = 0.07 secs] 2015-12-09T21:07:34.406 + 0000:29566.920:总时间 应用程序线程被停止:0.0672519秒,停止线程 花了:0.0000681秒