java - 如何使 Eden Space 大小加倍 Tenured Space

标签 java jvm heap-memory jvm-hotspot

有什么办法可以让 Eden 空间按比例大于 Tenured 空间吗?有 NewRatio 但它以相反的方式工作(Tenured 比 Eden 大几倍)。

我知道有 -XX:NewSize=-XX:OldSize= 但我一直在寻找类似于提到的比率参数的东西(这将提供更大的灵 active ) .

我尝试过使用分数,但它不是有效值。

最佳答案

与总堆大小(使用 -Xms 和 -Xmx)类似,可以显式设置年轻代大小的下限和上限。但是,在设置 -XX:MaxNewSize 时,我们需要考虑到年轻代只是堆的一部分,并且我们选择的大小越大,老年代就会越小。 出于稳定性原因,不允许选择比老年代更大的年轻代大小,因为在最坏的情况下,GC 可能需要将所有对象从年轻代移动到老年代。因此 -Xmx/2 是 -XX:MaxNewSize 的上限。

出于性能原因,我们还可以使用标志 -XX:NewSize 指定年轻代的初始大小。如果我们知道年轻对象的分配速率(例如,因为我们测量了它!),那么这很有用,并且可以节省随着时间的推移将年轻一代缓慢增长到该大小所需的一些成本。

我的回答是基于this博客。

关于java - 如何使 Eden Space 大小加倍 Tenured Space,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37654599/

相关文章:

java - 如何将内置的 PLAF 与自定义组件一起使用?

java - 在iText7中创建PdfTextFormField专门用于数字输入

java - JVM - 非 jit 编译的代码如何运行

linux - 大页面性能下降

垃圾内存支持的java编码标准

java - 从java内部找到调试端口

java - Clojure:[D 和 [Ljava.lang.Double; 之间有什么区别?

java - JVM 验证错误 'Illegal type at constant pool'

c++ - 在函数外访问堆栈对象

javascript - 生成器函数的局部变量存储在堆栈还是堆上?