jvm 虚拟机常用参数
*****************************
参数格式(区分大小写)
-XX:+name:启用name
-XX:-name:禁用name
-XX:name=value:将name赋值为value
示例:
-Xms10m <==> -XX:InitialHeapSize=10m:设置heap的初始大小为10m
*****************************
gc日志
-XX:+PrintGC is deprecated. Will use -Xlog:gc instead.
-XX:+PrintGCDetails is deprecated. Will use -Xlog:gc* instead.
-XX:+PrintGC ==> -Xlog:gc 输出gc日志
-XX:+PrintGCDetails ==> -Xlog:gc* 输出日志详细信息
*****************************
垃圾收集器参数
-XX:+UseSerialGC:Serial + Serial Old
-XX:+UseParNewGC:ParNew + Serial Old(ParNew在java 10中已经移除,该参数无法使用)
-XX:+UseParallelGC:Parallel Scavenge + Parallel Old
-XX:+UseParallelOldGC:Parallel Scavenge + Parallel Old(该参数在java 15中已经移除,直接使用UseParallelGC)
-XX:+UseConcMarkSweepGC:ParNew + CMS + Serial Old(CMS在java 14已经移除)
-XX:+UseG1GC:G1垃圾收集器
-XX:+UseZGC:ZGC垃圾收集器(ZGC在java 15正式发布)
-XX:SurvivorRatio=8:新生代eden:survivor的比值
-XX:PretenureSizeThreshold=1024000:进入老年代对象大小
-XX:MaxtenuringThreshold=2:进入老年代的年龄
-XX:ParallelGCThreads=2:并行gc线程数,限制垃圾回收线程
-XX:GCTimeRatio=99:gc占总时间的比率,默认为99,即最多1%的垃圾回收时间,用于控制吞吐量,Parallel Scavenge生效
-XX:MaxGCPauseMillis=10:最大停顿时间(毫秒),实际停顿时间可能会超过该值,Parallel Scavenge中使用
-XX:+UseAdaptiveSizePolicy:自动调节各区域的大小、进入老年代的年龄,Parallel Scavenge中使用
CMS在java9已经不推荐使用,在java 14中已经移除
-XX:CMSInitiatingOccupancyFraction=68%:默认为68%,CMS在老年代中使用大68%时,触发full gc,在CMS生效
-XX:+UseCMSCompactAtFullGC:开启内存碎片整理,在CMS生效
-XX:CMSFullGCsBeforeCompaction=2:默认为0,即每次full gc时,都会进行整理,在CMS生效
*****************************
堆栈大小分配
栈空间
-Xss128k:线程使用的栈空间大小为128k
堆空间
-Xms20m:最小堆空间
-Xmx20m:最大堆空间
-Xmn10m:新生代堆空间大小
-XX:SurvivorRatio=8:新生代eden和survivor的比值
*****************************
-verbose:输出虚拟机运行信息
-verbose:class:输出类加载信息
"C:\Program Files\Java\jdk-12.0.2\bin\java.exe" -verbose:class -XX:SurvivorRatio=5 -Xlog:gc -XX:+HeapDumpOnOutOfMemoryError "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2019.2\lib\idea_rt.jar=59539:C:\Program Files\JetBrains\IntelliJ IDEA 2019.2\bin" -Dfile.encoding=UTF-8 -classpath E:\java\IdeaProjects\test\out\production\test jvmtest.HelloTest
[0.022s][info][class,load] opened: C:\Program Files\Java\jdk-12.0.2\lib\modules
[0.027s][info][gc ] Using G1
[0.031s][info][class,load] java.lang.Object source: shared objects file
[0.031s][info][class,load] java.io.Serializable source: shared objects file
[0.031s][info][class,load] java.lang.Comparable source: shared objects file
[0.031s][info][class,load] java.lang.CharSequence source: shared objects file
[0.031s][info][class,load] java.lang.constant.Constable source: shared objects file
-verbose:gc:输出gc信息,与-Xlog:gc等效
"C:\Program Files\Java\jdk-12.0.2\bin\java.exe" -Xms20m -Xms20m -Xmn10m -verbose:gc "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2019.2\lib\idea_rt.jar=59675:C:\Program Files\JetBrains\IntelliJ IDEA 2019.2\bin" -Dfile.encoding=UTF-8 -classpath E:\java\IdeaProjects\test\out\production\test jvmtest.HelloTest
[0.025s][info][gc] Using G1
[0.052s][info][gc] Periodic GC disabled
[0.166s][info][gc] GC(0) Pause Young (Concurrent Start) (G1 Humongous Allocation) 9M->7M(20M) 3.077ms
[0.167s][info][gc] GC(1) Concurrent Cycle
[0.170s][info][gc] GC(1) Pause Remark 13M->13M(24M) 0.689ms
[0.170s][info][gc] GC(1) Pause Cleanup 13M->13M(24M) 0.048ms
[0.170s][info][gc] GC(1) Concurrent Cycle 3.884ms
-verbose:jni:输出本地方法调用信息
"C:\Program Files\Java\jdk-12.0.2\bin\java.exe" -verbose:jni -XX:SurvivorRatio=5 -Xlog:gc -XX:+HeapDumpOnOutOfMemoryError "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2019.2\lib\idea_rt.jar=59495:C:\Program Files\JetBrains\IntelliJ IDEA 2019.2\bin" -Dfile.encoding=UTF-8 -classpath E:\java\IdeaProjects\test\out\production\test jvmtest.HelloTest
[0.022s][info][gc] Using G1
[Dynamic-linking native method java.lang.Object.registerNatives ... JNI]
[Registering JNI native method java.lang.Object.hashCode]
[Registering JNI native method java.lang.Object.wait]
[Registering JNI native method java.lang.Object.notify]
[Registering JNI native method java.lang.Object.notifyAll]
[Registering JNI native method java.lang.Object.clone]
[Dynamic-linking native method java.lang.System.registerNatives ... JNI]
[Registering JNI native method java.lang.System.currentTimeMillis]
[Registering JNI native method java.lang.System.nanoTime]