如何阅读GCDetails

时间:2014-04-15 23:26:44

标签: java garbage-collection

我有一个存储大量数据的java程序,我试着用以下VM参数运行它:-XX:+ PrintGCDetails

关于程序关闭,它打印出来:

Heap
 PSYoungGen      total 238016K, used 100138K [0x00000000eaeb0000, 0x00000000fd460000, 0x0000000100000000)
  eden space 224640K, 38% used [0x00000000eaeb0000,0x00000000f0378dc0,0x00000000f8a10000)
  from space 13376K, 99% used [0x00000000fbd50000,0x00000000fca51a60,0x00000000fca60000)
  to   space 10240K, 0% used [0x00000000fca60000,0x00000000fca60000,0x00000000fd460000)
 PSOldGen        total 92608K, used 88569K [0x00000000c0c00000, 0x00000000c6670000, 0x00000000eaeb0000)
  object space 92608K, 95% used [0x00000000c0c00000,0x00000000c627e660,0x00000000c6670000)
 PSPermGen       total 64256K, used 64244K [0x00000000bba00000, 0x00000000bf8c0000, 0x00000000c0c00000)
  object space 64256K, 99% used [0x00000000bba00000,0x00000000bf8bd300,0x00000000bf8c0000)

我假设99%(和95%)使用过的部分表明我需要做一些调整。我只是不确定是什么。

1 个答案:

答案 0 :(得分:1)

好的前99%都很好:

  

来自太空13376K,99%使用

这就是年轻一代的GC如何运作。对象从次要GC上的Eden到Survivor空间(从空间到空间),从主要GC上的幸存者到老一代。

第二个:

  

对象空间92608K,95%使用

是你应该担心的事情。老一代根据你的日志有大约100MB的空间,这通常太少,但取决于你执行的代码。

你应该更多地测量你的程序以获得准确的结果,但似乎你仍然在创建一些长寿命的对象,这些对象在旧一代中堆积。