java虚拟机参数-D、-X和-XX的区别小结
作者:上尤流苏
最近在学习jvm调优相关的内容, 一直有一个疑问,为什么有些参数是以-X开头的,有些是以-XX开头的,还有-D开头的?
通过查询资料、总结如下
-XX
说明:
标准选择(Standard Options)
这些是 JVM 的所有实现都支持的最常用的选项。
These are the most commonly used options that are supported by all implementations of the JVM.
示例:
例如以-XX开头的配置参数
-XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnable -XX:+UseFastAccessorMethods
-X
说明:
非标准选择(Non-Standard Options)
这些选项是特定于 Java HotSpot 虚拟机的通用选项。
These options are general purpose options that are specific to the Java HotSpot Virtual Machine.
示例:
例如以-X开头的配置参数
-Xmx256m -Xms256m -Xmn768m -Xss256k
-D
说明:
设置系统属性值;
-D属性名称=属性值
Sets a system property value. The property variable is a string with no spaces that represents the name of the property. The value variable is a string that represents the value of the property. If value is a string with spaces, then enclose it in quotation marks (for example -Dfoo=“foo bar”).
示例:
例如以-D开头的配置参数
-Dspring.profiles.active=release -Dspring.config.location=/opt/app/conf/
如果 属性值 是一个带有空格的字符串,那么用引号将其括起来
例如 -Dfoo = “ foo bar”
如果想进一步了解参数的详细信息,可以查阅Oracle官网
Oracle官网关于参数的说明
常用JVM参数
1.-Xms:初始堆大小。只要启动,就占用的堆大小。
2.-Xmx:最大堆大小。java.lang.OutOfMemoryError:Java heap这个错误可以通过配置-Xms和-Xmx参数来设置。
3.-Xss:栈大小分配。栈是每个线程私有的区域,通常只有几百K大小,决定了函数调用的深度,而局部变量、参数都分配到栈上。
当出现大量局部变量,递归时,会发生栈空间OOM(java.lang.StackOverflowError)之类的错误。
4.XX:NewSize:设置新生代大小的绝对值。
5.-XX:NewRatio:设置年轻代和年老代的比值。比如设置为3,则新生代:老年代=1:3,新生代占总heap的1/4。
6.-XX:MaxPermSize:设置持久代大小。
java.lang.OutOfMemoryError:PermGenspace这个OOM错误需要合理调大PermSize和MaxPermSize大小。
7.-XX:SurvivorRatio:年轻代中Eden区与两个Survivor区的比值。注意,Survivor区有form和to两个。比如设置为8时,那么eden:form:to=8:1:1。
8.-XX:HeapDumpOnOutOfMemoryError:发生OOM时转储堆到文件,这是一个非常好的诊断方法。
9.-XX:HeapDumpPath:导出堆的转储文件路径。
10.-XX:OnOutOfMemoryError:OOM时,执行一个脚本,比如发送邮件报警,重启程序。后面跟着一个脚本的路径。
到此这篇关于java虚拟机参数-D、-X和-XX的区别小结的文章就介绍到这了,更多相关java -D -X和-XX内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!