JVM参数类型
- 1.标准参数(-)
- 所有的JVM实现都必须实现这些参数的功能,而且向后兼容。
- 2.非标准参数(-X)
- 默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容。
- 3.非Stable参数(-XX)
- 此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用
JVM参数几种类型说明:
- 1.布尔型参数选项:-XX:+ 打开, -XX:- 关闭。
- 2.数字型参数选项通过-XX:=设定。
- 3.字符行参数选项通过-XX:=设定,通常用来指定一个文件,路径,或者一个命令列表。
参数 | 含义 | 默认值 | 示例 | 说明 |
---|---|---|---|---|
-Xms | 初始堆大小 | 物理内存的1/64(<1GB) | -Xms2G | 默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制. |
-Xmx | 最大堆大小 | 物理内存的1/4(<1GB) | -Xmx1g | 默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制 |
-Xss | 每个线程的堆栈大小 | JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K | ||
-Xmn | 年轻代大小 | 此处的大小是(eden+ 2 survivor space).此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8 |
-XX | 说明 |
---|---|
-XX:PermSize | 表示非堆区初始内存分配大小 |
-XX:MaxPermSize | 表示对非堆区分配的内存的最大上限 |
-XX:-UseGCOverheadLimit | GC回收时间过长时会抛出OutOfMemoryError。超过98%的时间用来做GC,连续多次GC都只回收了不到2%的极端情况下才会抛出。jvm预判将会发生OutOfMemery异常,就提早抛出这个异常,并不代表jvm没有内存空间了。执行命令关闭jvm的预判功能。 |
-XX:SurvivorRatio | 设置为8,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10.例子: -Xmn500m -XX:SurvivorRatio=3,这样Survivor(2个)与Eden区的大小比值 2:3 500/5=100,也就是每份100,Eden有3份=300 |
-XX:+UseConcMarkSweepGC | 开启并行并发CMS垃圾回收器 |
GC设置参数垃圾回收方式 | 设置说明 | 描述 |
---|---|---|
-XX:+UseParallelGC | Full GC采用 parallel MSC ? | 选择垃圾收集器为并行收集器.此配置仅对年轻代有效.即上述配置下,年轻代使用并发收集,而年老代仍旧使用串行收集 |
-XX:+UseParNewGC | 设置年轻代为并行收集 | 可与CMS收集同时使用 JDK5.0以上,JVM会根据系统配置自行设置,所以无需再设置此值 |
-XX:ParallelGCThreads | 并行收集器的线程数 | 此值最好配置与处理器数目相等 同样适用于CMS |
-XX:+UseParallelOldGC | 年老代垃圾收集方式为 并行收集 (Parallel Compacting) | |
-XX:MaxGCPauseMillis | 每次年轻代垃圾回收的最长时间(最大暂停时间) | 如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值. |
-XX:+UseAdaptiveSizePolicy | 自动选择年轻代区大小和相应的Survivor区比例 | 设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,一直打开. |
-XX:GCTimeRatio | 设置垃圾回收时间占程序运行时间的百分比 | 公式为1/(1+n) |
其他 | ||||
---|---|---|---|---|
-Duser.timezone=GMT+8 | 东8区时区 | |||
-XX:+PrintGCDetails | 时间 | 年轻代: 回收前大小 -> 回收后大小 (年轻代总大小) | 回收前堆大小 -> 回收后堆大小 (整个堆大小),回收耗时 | [用户耗时 系统耗时 实际耗时] |
2022-09-16T22:21:32.853+0800 | [GC (Allocation Failure) [PSYoungGen: 488K->488K(2560K)] | 1422K->1422K(9728K), 0.0011908 secs] | [Times: user=0.00 sys=0.00, real=0.00 secs] | |
时间 | [年轻代: 回收前大小 -> 回收后大小 (年轻代总大小)] [老年代: 回收前大小 -> 回收后大小 (老年代总大小)] | [元空间: 回收前大小 -> 回收后大小 (整个元空间大小), 回收耗时] | [用户耗时 系统耗时 实际耗时] | |
2022-09-16T23:21:32.853+0800 | [PSYoungGen: 488K->0K(2560K)] [ParOldGen: 934K->997K(5632K)] 1422K->997K(8192K) | [Metaspace: 5058K->5058K(1056768K)], 0.0129179 secs] | [Times: user=0.05 sys=0.00, real=0.01 secs] | |
-XX:+HeapDumpOnOutOfMemoryError | Creates heap dump in out-of-memory condition | |||
-XX:+HeapDumpBeforeFullGC | Creates heap dump file before full GC | |||
-XX:+HeapDumpAfterFullGC | Creates heap dump file after full GC | |||
-XX:HeapDumpPath= | Specifies path to save heap dumps |