当所有对象都年轻时,java GC

时间:2015-04-19 05:34:42

标签: java garbage-collection

对于案例,您会建议什么样的GC设置,当文字中所有对象都非常年轻时? 我有8 Gb堆,默认情况下1.495 Gb用于Eden,191 Mb用于每个Survivor空间。 我知道,Tenured永远不会成长,它仍然总是占据0.01%。 但每2-3分钟我就有伊甸园系列。 Tenured中未使用空间的放弃是没有意义的(或者是它?)? 你的建议是什么?

1 个答案:

答案 0 :(得分:1)

这并不危险。只要堆很好地适应主存,你就不会遇到问题。我还建议您尽可能使用压缩oops(通过保持堆<32 GB) 我经常有一个24 GB的Eden,所以如果我每小时产生1 GB的垃圾,我每天会得到一个小的收集。 (实际上我每天都在一个已知的时间安排完整的收藏)

您应该认真考虑的一件事是使用Java 8,因为JVM具有有效的逃逸分析。这意味着非常短暂的对象被放置在堆栈上并且根本不使用堆。

要记住的是,收集伊甸园的成本基本上与保留的物体的数量和大小成比例。拥有一个几乎没有任何东西的伊甸园,一个8 GB的伊甸园大约是8 MB伊甸园收集的两倍。 增加伊甸园的大小可以让你有更多的时间在伊甸园空间死亡,避免被复制给幸存者。

相关问题