JAVA GC - 次要GC后收集的顶级类

时间:2015-12-22 08:00:27

标签: optimization garbage-collection jvm

我们这些天一直在监控我们实验室的应用。我们发现轻微的GC经常发生,GC的总时间在20分钟内约为15秒。

与其他公司的同类产品相比,我们测得总GC时间约为8秒。

我们希望知道代码的哪一部分会导致频繁分配和回收对象,这样我们就可以优化代码并尽可能多地跟上其他代码。

我们尝试使用jvisualvm创建堆转储并查看两个堆转储之间的区别。但是,创建堆转储的时间很难处理,创建也很慢。

是否有任何工具或方法可以知道在每次次要GC期间最常收集哪些类?

谢谢!

1 个答案:

答案 0 :(得分:0)

java profilers(如jmc,jprofiler或yourkit)提供分配记录或类直方图差异,它应该告诉您经常分配哪些类。有些人甚至可以告诉你分配网站。

另外,您可以尝试调整GC以减少年轻一代(通过使其更大或放松暂停时间目标),这可能会提高效率。

  

总GC时间占运行时间的相对较大比例

这很奇怪。它通常会触发超出OOME的GC开销限制,至少对于并行收集器来说是默认值。