JVM—运行参数
运行参数类型分类:
- 标准参数(很稳定,在未来JVM版本中不会改变):
- -help
- -version
- -X参数(非标准参数):
- -Xint
- -Xcomp
- -XX参数(使用频率高):
- -XX:newSize
- -XX:+UseSerialGC
标准参数
命令窗口(cmd , bash)输入:
java -version 查看Java版本
java -help 查看java的命令参数及解释
-XX参数:
-XX 参数有两种类型,一种是boolean类型,一种是非boolean类型
- boolean类型:
- 格式: -XX:+<属性名> 表示启用某个属性; -XX:-<属性名> 表示禁用某个属性; (注意加号表示启用,减号表示禁用)
例子: -XX:+DisableExplicitGC 表示禁用手动的GC操作,即代码中手动调用System.gc()无效;
- 非boolean类型:
- 格式: -XX:= 表示将某个属性name的值设置为value
例子: -XX:NewRatio=1 表示新生代和老年代的比值
(1)-Xms与-Xmx参数(属于-XX参数类型)
这两个参数分别是设置JVM堆内存的初始大小和最大大小
- -Xms512m 等价于 -XX:InitialHeapSize=512m, 表示设置初始堆内存为512M;
- -Xmx2048m 等价于 -XX:MaxHeapSize=2048m, 表示设置最大堆内存为2048M;
(2)-XX:+PrintFlagsFinal
-XX:+PrintFlagsFinal 在运行java程序的时候将所有的参数打印出来.
(3)-verbose:gc
表示输出虚拟机中GC的详细情况
(4)-Xss128k
表示可以设置虚拟机栈的大小为128k
(5)-Xoss128k
表示设置本地方法栈的大小为128k。不过HotSpot并不区分虚拟机栈和本地方法栈,因此对于HotSpot来说这个参数是无效的
(6)-XX:PermSize=10M
表示JVM初始分配的永久代(方法区)的容量,必须以M为单位
(7)-XX:MaxPermSize=10M
表示JVM允许分配的永久代(方法区)的最大容量,必须以M为单位,大部分情况下这个参数默认为64M
(8)-Xnoclassgc
表示关闭JVM对类的垃圾回收
(9)-XX:+TraceClassLoading
表示查看类的加载信息
(10)-XX:+TraceClassUnLoading
表示查看类的卸载信息
(11)-XX:NewRatio=4
表示设置 年轻代(包括Eden和两个Survivor区)/老年代 的大小比值为1:4,这意味着年轻代占整个堆的1/5
**(12)-XX:SurvivorRatio=**8
表示设置2个Survivor区:1个Eden区的大小比值为2:8,这意味着Survivor区占整个年轻代的1/5,这个参数默认为8
(13)-Xmn20M
表示设置年轻代的大小为20M
(14)-XX:+HeapDumpOnOutOfMemoryError
表示可以让虚拟机在出现内存溢出异常时Dump出当前的堆内存转储快照
(15)-XX:+UseG1GC
表示让JVM使用G1垃圾收集器
(16)-XX:+PrintGCDetails
表示在控制台上打印出GC具体细节
(17)-XX:+PrintGC
表示在控制台上打印出GC信息
(18)-XX:PretenureSizeThreshold=3145728
表示对象大于3145728(3M)时直接进入老年代分配,这里只能以字节作为单位
(19)-XX:MaxTenuringThreshold=1
表示对象年龄大于1,自动进入老年代,如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象在年轻代的存活时间,增加在年轻代被回收的概率。
(20)-XX:CompileThreshold=1000
表示一个方法被调用1000次之后,会被认为是热点代码,并触发即时编译
(21)-XX:+PrintHeapAtGC
表示可以看到每次GC前后堆内存布局
(22)-XX:+PrintTLAB
表示可以看到TLAB的使用情况
(23)-XX:+UseSpining
开启自旋锁
(24)-XX:PreBlockSpin
更改自旋锁的自旋次数,使用这个参数必须先开启自旋锁
(25)-XX:+UseSerialGC
表示使用jvm的串行垃圾回收机制,该机制适用于丹cpu的环境下
(26)-XX:+UseParallelGC
表示使用jvm的并行垃圾回收机制,该机制适合用于多cpu机制,同时对响应时间无强硬要求的环境下,使用-XX:ParallelGCThreads=设置并行垃圾回收的线程数,此值可以设置与机器处理器数量相等。
(27)-XX:+UseParallelOldGC
表示年老代使用并行的垃圾回收机制
(28)-XX:+UseConcMarkSweepGC
表示使用并发模式的垃圾回收机制,该模式适用于对响应时间要求高,具有多cpu的环境下
(29)-XX:MaxGCPauseMillis=100
设置每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值。
(30)-XX:+UseAdaptiveSizePolicy
设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低响应时间或者收集频率等,此值建议使用并行收集器时,一直打开