当所有物体都很年轻的时候,你会为这种情况建议什么GC设置?我有8 Gb堆,默认情况下1.495 Gb用于Eden,191 Mb用于每个Survivor空间。我明白了,终身监禁从来没有增长过,它一直保持着0.01%的占有率。但每次2-3分钟我都有伊甸园的收藏。放弃终身未使用的空间是没有意义的(或使它?)你的建议是什么?
发布于 2015-04-19 06:55:36
这并不危险。只要堆舒适地放入主内存中,您就不会有问题。我还建议您在可能的情况下使用压缩oops (通过保持堆< 32 GB),我通常有一个24 GB的Eden,所以如果我每小时产生1GB垃圾,那么每天只收集一个小垃圾。(实际上,我每天都会在已知的时间安排一个完整的收藏)
您应该认真考虑的一件事是使用Java 8,因为JVM具有有效的转义分析。这意味着非常短暂的对象被放置在堆栈上,根本不使用堆。
要记住的是,收集伊甸园的费用基本上与保留的物品的数量和大小成正比。拥有一个几乎什么都不保存的伊甸园,一个8 GB的伊甸园花费的时间大约是一个8 MB的伊甸园的两倍。增加伊甸园的大小可以让你的对象有更多的时间死在伊甸园的空间里,避免被复制到幸存者身上。
https://stackoverflow.com/questions/29726215
复制相似问题