-XX:NewSize=20m -XX:MaxNewSize=40m,-Xmn30m,-XX:NewRatio=5

[Q&A] -XX:NewSize=20m -XX:MaxNewSize=40m,-Xmn30m,-XX:NewRatio=5 啥作用

分配年轻代大小

[Q&A] 这3组参数都可以影响年轻代的大小,混合使用的情况下,优先级是什么?

高优先级:-XX:NewSize=20m -XX:MaxNewSize=40m 设置新生代初始值,最大值
中优先级:-Xmn30m(默认等效-XX:NewSize=30m -XX:MaxNewSize=30m) 设置新生代初始值
低优先级:-XX:NewRatio=5 设置老年代和新生代的比例。 如-XX:NewRatio=4 表示新生代:老年代 = 1:4,即新生代占1/5,老年代占4/5
推荐使用 -Xmn参数,原因是这个参数相当于一次设定 NewSize/MaxNewSIze,而且两者相等,适用于生产环境;
-Xms -Xmx -Xmn 即可将堆内存布局完成

验证高优先级:

启动参数
-Xms60m -Xmx80m -Xmn30m -XX:NewSize=20m -XX:MaxNewSize=40m -XX:NewRatio=5 -XX:+PrintCommandLineFlags -Xlog:gc*
启动日志
-XX:ConcGCThreads=3 -XX:G1ConcRefinementThreads=13 -XX:GCDrainStackTargetSize=64 -XX:InitialHeapSize=62914560 -XX:MarkStackSize=4194304 -XX:MaxHeapSize=83886080 -XX:MaxNewSize=41943040 -XX:MinHeapSize=62914560 -XX:NewRatio=5 -XX:NewSize=20971520 -XX:+PrintCommandLineFlags -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC -XX:-UseLargePagesIndividualAllocation

[0.012s][warning][gc,ergo] -XX:NewSize and -XX:MaxNewSize override -XX:NewRatio
JPS+jhsdb jmap --heap --pid 进程ID
Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 83886080 (80.0MB)
NewSize = 20971520 (20.0MB)
MaxNewSize = 41943040 (40.0MB)
OldSize = 5452592 (5.1999969482421875MB)
NewRatio = 5
SurvivorRatio = 8
MetaspaceSize = 22020096 (21.0MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 1048576 (1.0MB)

中优先级验证:

启动参数
-Xms60m -Xmx80m -Xmn30m -XX:NewRatio=5 -XX:+PrintCommandLineFlags -Xlog:gc*
启动日志
-XX:ConcGCThreads=3 -XX:G1ConcRefinementThreads=13 -XX:GCDrainStackTargetSize=64 -XX:InitialHeapSize=62914560 -XX:MarkStackSize=4194304 -XX:MaxHeapSize=83886080 -XX:MaxNewSize=31457280 -XX:MinHeapSize=62914560 -XX:NewRatio=5 -XX:NewSize=31457280 -XX:+PrintCommandLineFlags -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC -XX:-UseLargePagesIndividualAllocation

[0.015s][warning][gc,ergo] -XX:NewSize and -XX:MaxNewSize override -XX:NewRatio
JPS + jhsdb jmap --heap --pid 进程ID
Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 83886080 (80.0MB)
NewSize = 31457280 (30.0MB)
MaxNewSize = 31457280 (30.0MB)
OldSize = 5452592 (5.1999969482421875MB)
NewRatio = 5
SurvivorRatio = 8
MetaspaceSize = 22020096 (21.0MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 1048576 (1.0MB)

低优先级验证:

启动参数
-Xms60m -Xmx80m -XX:NewRatio=5 -XX:+PrintCommandLineFlags -Xlog:gc*
启动日志
-XX:ConcGCThreads=3 -XX:G1ConcRefinementThreads=13 -XX:GCDrainStackTargetSize=64 -XX:InitialHeapSize=62914560 -XX:MarkStackSize=4194304 -XX:MaxHeapSize=83886080 -XX:MinHeapSize=62914560 -XX:NewRatio=5 -XX:+PrintCommandLineFlags -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC -XX:-UseLargePagesIndividualAllocation
JPS + jhsdb jmap --heap --pid 进程ID
Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 83886080 (80.0MB)
NewSize = 1363144 (1.2999954223632812MB)
MaxNewSize = 13631488 (13.0MB) 因新生代:老年代 = 1:5,且初始Heap Initial Capacity:60M,所以这里为10M
OldSize = 5452592 (5.1999969482421875MB)
NewRatio = 5
SurvivorRatio = 8
MetaspaceSize = 22020096 (21.0MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 1048576 (1.0MB)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值