在命令行上分析大堆转储?

时间:2015-12-09 21:31:16

标签: java garbage-collection heap-dump

我有一个遗留应用程序,其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秒

0 个答案:

没有答案