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

这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,而且两者相等,适用于生产环境;

-Xmn + -Xms + -Xmx 即可将堆内存布局完成


优先级验证

验证高优先级:

启动参数
-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)

优先级验证(好早以前验证截图,删除可惜保留参考)

//JVM 启动参数
-Xms60m -Xmx80m -Xmn30m -XX:NewSize=20m -XX:MaxNewSize=40m -XX:NewRatio=5 -XX:+PrintCommandLineFlags -XX:+PrintGCDetails//运行结果:
-XX:InitialHeapSize=62,914,560 -XX:MaxHeapSize=83,886,080 
-XX:NewSize=20,971,520 -XX:MaxNewSize=41,943,040 
-XX:NewRatio=5 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC 

在这里插入图片描述

------------------------------------------------------------------
//JVM 启动参数
-Xmx80m -Xms60m -Xmn30m -XX:NewRatio=5 -XX:+PrintCommandLineFlags -XX:+PrintGCDetails//运行结果:
-XX:InitialHeapSize=62914560 -XX:MaxHeapSize=83886080 
-XX:NewSize=31457280 -XX:MaxNewSize=31457280 -XX:NewRatio=5 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC 
------------------------------------------------------------------

在这里插入图片描述

//JVM 启动参数
-Xmx80m -Xms60m -XX:NewRatio=5 -XX:+PrintGCDetails -XX:+PrintCommandLineFlags//运行结果:
-XX:InitialHeapSize=62914560 -XX:MaxHeapSize=83886080 
-XX:NewRatio=5 -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC 

在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部