JVM运行时参数

1、标准参数选项

比较稳定,后续版本基本不会变化

2、-X参数选项

java -X

 

    -Xmixed           混合模式执行 (默认)
    -Xint             仅解释模式执行

 

-Xms<size>       设置初始Java堆大小,等价于-XX:InitialHeapSize
-Xmx<size>       设置最大Java堆大小,等价于-XX:MaxHeapSize
-Xss<size>         设置Java线程堆栈大小,等价于-XX:ThreadStackSize

3、-XX参数选项

3.1、分类(Boolean类型格式)

-XX:+<option> 表示启用option属性
-XX:-<option> 表示禁用optioan属性
-XX:-UseParallelGC 不选择垃圾收集器为并行收集器
-XX:+UseG1GC 表示启用G1收集器
-XX:+UseAdaptiveSizePolicy 自动选择年轻代区大小和相应的Survivor区比例

 

3.2、非Boolean类型格式

-XX:<option>=<number> 数值型格式
-XX:<name>=<String> 非数值型格式
-XX:NewSize=1024m  表示设置新生代初始大小为1024兆
-XX:MaxGCPauseMillis=500 表示设置GC停顿时间:500毫秒
-XX:GCTimeRatio=19 表示设置吞吐量
-XX:NewRatio=2 表示新生代和老年代的比例
-XX:HeapDumpPath=/usr/local/heapdump.hprof 知道heap转存文件的存储路径

3.3、特别的

-XX:+PrintFlagFinal
输出所有参数的名称和默认值
默认不包括Diagnostic和Experimental的参数
可以配合-XX:+UnlockDiagnosticVMOptions和-XX:UnlockExperimentalVMOptions使用

4、添加参数

4.1、在运行时添加

使用jinfo -flag <name>=<value> <pid>设置非Boolean类型参数
使用jinfo -flag [+|-]<name> <pid>设置Boolean类型参数
jinfo -flag UseParallelGC PID

 

4.2、在idea添加

 

 5、常用JVM参数选项

5.1、打印设置的XX选项及值

-XX:+PrintFlagsFinal  //表示打印出XX选项在运行程序时生效的值

5.2、堆、栈、方法区等内存大小设置

5.2.1、栈

-Xss128k  等价于-XX:ThreadStackSize,设置每个线程的栈大小为128k

5.2.2、堆内存

-Xms3550m  等价于-XX:InitialHeapSize,设置JVM初始堆内存为3500M
-Xmx3550m  等价于-XX:MaxHeapSize,设置JVM最大堆内存为3500M
-Xmn2g  设置年轻代大小为2G,即等价于-XX:NewSize=2g -XX:MaxNewSize=2g,也就是设置年轻代初始值和年轻代最大值都是2G  官方推荐配置为整个堆大小的3/8
-XX:NewSize=1024m 设置年轻代初始值为1024M
-XX:MaxNewSize=1024m 设置年轻代最大值为1024M
-XX:SurvivorRatio=8 设置年轻代中Eden区与一个Survivor区的比值,默认为8
-XX:+UseAdaptiveSizePolicy 自动选择各区大小比例,默认开启
-XX:NewRatio=2 设置老年代与年轻代(包括1个Eden区和2个Survivor区)的比值,默认为2
-XX:PretenureSizeThreadshold=1024 设置让大于此阈值的对象直接分配在老年代,单位为字节
只对Serial、ParNew收集器有效
-XX:MaxTenuringThreshold=15 默认值为15 新生代每次MinorGC后,还存活的对象年龄+1,当对象的年龄大于设置的这个值时就进入老年代
-XX:+PrintTenuringDistribution 让JVM在每次MinorGC后打印出当前使用的Survivor中对象的年龄分布
-XX:TargetSurvivorRatio 表示MinorGC结束后Survivor区域中占用空间的期望比例

 

-XX:+UseAdaptiveSizePolicy //自动选择各区大小比例,默认开启,会影响设置(建议打开)

5.2.3、方法区

5.2.4、直接内存

-XX:MaxDirectMemorySize

5.3、OutOfMemory相关的选项

-XX:+HeapDumpOnOutMemoryError 

表示在内存出现OOM的时候,生成Heap转储文件,以便后续分析,-XX:+HeapDumpBeforeFullGC和-XX:+HeapDumpOnOutMemoryError只能设置1个
-XX:+HeapDumpBeforeFullGC 
表示在出现FullGC之前,生成Heap转储文件,以便后续分析,-XX:+HeapDumpBeforeFullGC和-XX:+HeapDumpOnOutMemoryError只能设置1个,请注意FullGC可能出现多次,那么dump文件也会生成多个
-XX:HeapDumpPath=<path>  指定heap转存文件的存储路径,如果不指定,就会将dump文件放在当前目录中
-XX:OnOutOfMemoryError 指定一个可行性程序或者脚本的路径,当发生OOM的时候,去执行这个脚本

 

5.4、垃圾收集器相关选项

 

 

5.4.1、查看默认的垃圾回收器

-XX:+PrintCommandLineFlags:查看命令相关参数
jinfo -flag 相关垃圾回收器参数 进程ID

5.4.2、Serial回收器(串行)

作为HotSpot中Client 模式下的默认新生代垃圾收集器,Serial Old是运行在Client模式下默认的老年代的垃圾回收器

5.4.3、Parnew回收器(并行)

年轻代使用的并行收集器,不影响老年代

5.4.4、Parallel回收器(并行 jDK默认垃圾收集器,主打吞吐量)

5.4.5、CMS回收器(并发,垃圾回收线程,和用户线程,JDk1.5开启)

5.4.6、G1回收器

5.4.7、怎么选择垃圾收集器

5.5、GC日志相关选项

常用参数:

-verbose:gc 输出日志信息,默认输出的标准输出,可以独立使用
-XX:+PrintGC 等同于-verbose:gc 表示打开简化的日志 可以独立使用
-XX:+PrintGCDetails 在发生垃圾回收时打印内存回收详细的日志, 并在进程退出时输出当前内存各区域的分配情况 可以独立使用
-XX:+PrintGCTimeStamps 程序启动到GC发生的时间秒数 不可以独立使用,需要配-XX:+PrintGCDetails使用

-XX:+PrintGCDateStamps 输出GC发生时的时间戳(以日期的形式,例如:2013-05-04T21:53:59.234+0800)不可以独立使用,可以配合-XX:+PrintGCDetails使用
-XX:+PrintHeapAtGC 每一次GC前和GC后,都打印堆信息,可以独立使用
-XIoggc:<file> 把GC日志写入到一个文件中去,而不是打印到标准输出中

5.6、其他

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追逐路上的小人物

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值