常用参数 以jdk8为例
-Xms(等价于-XX:InitialHeapSize)
设置堆的初始大小(以字节为单位)。此值必须是1024的倍数且大于1 MB。追加字母k或K表示千字节,m或M表示兆字节,g或G表示千兆字节。
以下示例显示如何使用各种单位将分配的内存大小设置为6 MB:
-Xms6291456
-Xms6144k
-Xms6m
如果未设置此选项,则初始大小将设置为为老一代和年轻一代分配的大小之和。可以使用-Xmn选项或-XX:NewSize选项设置年轻代的堆的初始大小。
-Xmx(等价于-XX:MaxHeapSize)
指定内存分配池的最大大小(以字节为单位)。此值必须是1024的倍数且大于2 MB。追加字母k或K表示千字节,m或M表示兆字节,g或G表示千兆字节。
默认值是在运行时根据系统配置选择的。对于服务器部署,-Xms并-Xmx经常设置为相同的值。
请参阅位于的Java SE HotSpot虚拟机垃圾收集优化指南中的“Ergonomics”部分
http://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/index.html
https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/ergonomics.html#sthref15
下面的示例演示如何使用各种单位将分配的最大内存大小设置为80 MB:
-Xmx83886080
-Xmx81920k
-Xmx80m
该-Xmx选项等效于-XX:MaxHeapSize。
-Xss(等价于-XX:ThreadStackSize)
设置线程堆栈大小(以字节为单位)。附加字母k或K表示KB,m或M表示MB,g或G表示GB。
下面的示例将线程堆栈大小以不同的单位设置为1024 KB:
-Xss1m
-Xss1024k
-Xss1048576
此选项等效于-XX:ThreadStackSize。
注意:这个值默认值取决于平台
Linux / x64(64位):1024 KB
macOS(64位):1024 KB
Oracle Solaris / x64(64位):1024 KB
Windows:默认值取决于虚拟内存
-Xmn
设置年轻一代的堆的初始大小和最大大小(以字节为单位)。追加字母k或K表示千字节,m或M表示兆字节,g或G表示千兆字节。
堆的年轻代区域用于新对象。与其他区域相比,在该区域执行GC的频率更高。如果年轻一代的大小太小,则会执行许多次要的垃圾回收。
如果大小太大,那么将仅执行完整的垃圾收集,这可能需要很长时间才能完成。Oracle建议您将年轻代的大小保持在整个堆大小的一半到四分之一之间。
以下示例显示如何使用各种单位将年轻一代的初始大小和最大大小设置为256 MB:
-Xmn256m
-Xmn262144k
-Xmn268435456
取而代之的是的-Xmn选项组中的两个堆年轻一代的初始和最大大小,您可以使用-XX:NewSize设置初始大小和-XX:MaxNewSize设置的最大尺寸。
-XX:MetaspaceSize
设置可以分配给类元数据的最大本机内存。默认情况下,大小不受限制。应用程序的元数据量取决于应用程序本身,
其他正在运行的应用程序以及系统上可用的内存量。
下面的示例显示如何将最大类元数据大小设置为256 MB:
-XX:MaxMetaspaceSize = 256m
注意:java8开始此项设置替换了之前版本的永久代(http://openjdk.java.net/jeps/122)
-XX:+PrintGCDetails
启用在每个GC上打印详细消息的功能。默认情况下,此选项是禁用的。
使用jinfo查看:
[root@localhost ~]# jinfo -flag PrintGCDetails 560
-XX:-PrintGCDetails
-XX:SurvivorRatio
设置年轻代中Eden区与Survivor区的大小比值.设置为4,则两个Survivor区与一个Eden区的比值为2:4,
一个Survivor区占整个年轻代的1/6
-XX:SurvivorRatio = 4
-XX:NewRatio
设置新老一代大小之间的比率。默认情况下,此选项设置为2。以下示例显示如何将年轻/老人比率设置为1:
-XX:NewRatio = 1
-XX:MaxTenuringThreshold
设置用于自适应GC大小调整的最大使用期限阈值。最大值为15。并行(吞吐量)收集器的默认值为15,而CMS收集器的默认值为6。
以下示例显示如何将最大期限阈值设置为10:
-XX:MaxTenuringThreshold = 10
网友评论