如果我看到新一代和旧世代空间中的大部分活动被利用不足,那么年轻一代比老一代更大是否可以。在旧一代以上增加新一代有什么后果吗?
就像-Xmx2g -Xmn1.5g
发布于 2018-07-26 14:11:33
您可以使用-Xmn来完成这个任务(这个答案基于java 8)
来自文档
为年轻一代(托儿所)设置堆的初始和最大大小(以字节为单位)。用字母k或K表示千字节,m或M表示兆字节,g或G表示千兆字节。 堆的年轻生成区域用于新对象。GC在这个区域比在其他区域执行得更频繁。如果年轻一代的大小太小,那么将执行大量的小垃圾收集。如果大小太大,则只执行完整的垃圾回收,这可能需要很长时间才能完成。Oracle建议您将年轻一代的大小保持在堆大小的一半到四分之一之间。 下面的示例演示如何使用不同的单元将年轻一代的初始和最大大小设置为256 MB:
可以使用-Xmn选项为年轻一代设置堆的初始大小和最大大小,可以使用-XX:NewSize设置初始大小,使用-XX:MaxNewSize设置最大大小。
例如,用
-Xms1024M -Xmx1024M -Xmn800m
空格将如下所示(使用用于visual this的visual gc插件)

您将有一个1024米的总堆大小,800米的年轻一代(伊甸园+2个幸存者空间)和224米的老一代。您可以使用SurvivorRatio调优幸存者空间
来自文档
您可以使用参数SurvivorRatio来调优幸存者空间的大小,但这对性能通常并不重要。例如,-XX:SurvivorRatio=6将伊甸园和幸存者空间的比例设为1:6。换句话说,每个幸存者空间将是伊甸园的六分之一,因此是年轻一代的八分之一(不是七分之一,因为有两个幸存者空间)。
https://stackoverflow.com/questions/44466546
复制相似问题