JAVA8 JVM调优配置参数说明

  Linux操作系统下内存4G,配置JAVA8 JVM:

-server 
-Xms2G 
-Xmx2G 
-Xmn256m 
-XX:MetaspaceSize=512M 
-XX:MaxMetaspaceSize=512M 
-Xss256k 
-XX:+UseConcMarkSweepGC 
-XX:+UseParNewGC 
-XX:+CMSClassUnloadingEnabled 
-XX:+HeapDumpOnOutOfMemoryError 
-verbose:gc 
-XX:+PrintGCDetails 
-XX:+PrintGCTimeStamps 
-XX:+PrintGCDateStamps 
-Xloggc:/appl/gc.log 
-XX:CMSInitiatingOccupancyFraction=75 
-XX:+UseCMSInitiatingOccupancyOnly

参数含义说明:

  • -server:设置JVM使用server模式,server模式启动慢,运行性能和内存效率高,适用于生产服务器;相对应的有-client模式,client模式启动速度快,运行性能和内存效率不高,适用于应用开发和调试
  • -Xms2G:设置JVM初始分配的堆内存,默认值为物理内存的1/64,建议修改为与-Xmx一致
  • -Xmx2G:设置JVM最大允许使用的堆内存,默认值为物理内存的1/4,建议修改为物理内存的2/3-1/4。
  • -Xmn256m:设置JVM年轻代的大小,建议不要太大,过大可能会导致YGC时间过长,影响吞吐量
  • -Xss256k:设置JVM中每个JAVA线程堆栈的大小,一般默认512~1024kb,建议值设置在默认范围内
  • -XX:MetaspaceSize=512M:设置JVM初始元空间大小,JAVA8以上才有该字段。当达到该值将触发垃圾收集进行类型卸载。同时,如果释放了大量的空间,GC将适当降低该值;如果释放了很少的空间,GC则会在不超过MaxMetaspaceSize时,适当提高该值。由于GC每次调整元空间的代价很昂贵,因此建议该值与MaxMetaspaceSize一致
  • -XX:MaxMetaspaceSize=512M:设置JVM初始元空间最大值
  • -XX:+UseParNewGC:设置JVM开启并发串行垃圾收集器,该收集器与CMS收集器配合工作。相对应的还有:UseParallelGC并行垃圾收集器,该收集器最大化的提高程序吞吐量,同时缩短程序停顿时间,但不与CMS收集器配合工作
  • -XX:+UseConcMarkSweepGC:设置JVM开启并发标记清除收集器,即开启CMS收集器,一般和 XX:+UseParNewGC 一起设置使用
  • -XX:+CMSClassUnloadingEnabled:设置JVM中CMS收集器对元空间(永久代)进行回收
  • -XX:+HeapDumpOnOutOfMemoryError:设置JVM发生OOM时,自动生成DUMP文件。
  • -XX:HeapDumpPath=./java_heapdump.hprof:设置JVM生成DUMP文件的路径,也可以指定文件名称,例如:-XX:HeapDumpPath=./java_heapdump.hprof,如果不指定文件名,默认为:java_<pid><date><time>_heapDump.hprof。
  • -verbose:gc:设置JVM输出GC日志 , -XX:+PrintGC 与 -verbose:gc 是一样的,可以认为-verbose:gc 是 -XX:+PrintGC的别名.
  • -XX:+PrintGCDetails:设置JVM打印GC详细信息
  • -XX:+PrintGCTimeStamps:设置JVM打印gc时间戳(以基准时间的形式)
  • -XX:+PrintGCDateStamps:设置JVM打印GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
  • -Xloggc:/appl/gc.log:设置JVM打印GC日志目录
  • -XX:CMSInitiatingOccupancyFraction=75:设置CMS收集器在对内存占用率达到75%的时候开始GC(因为CMS会有浮动垃圾,所以一般都较早启动GC);
  • -XX:+UseCMSInitiatingOccupancyOnly:设置CMS收集器只使用设定的回收阈值(上面指定的75%),如果不指定,JVM仅在第一次使用设定值,后续则自动调整
posted @ 2021-06-30 17:35  思无  阅读(3126)  评论(0编辑  收藏  举报