java 服务常配置的JVM参数

371 阅读2分钟

使用格式:java -jar .jar -D -XX:** -X*

使用参数前缀说明

  • -D 表示工程项目使用到的参数,即application.properties文件中的参数,非JVM参数,优先级比工程文件配置的要高
  • -X 标准参数-JVM个版本中是不会更改的
  • -XX 非标准参数,不同的jvm实现可能不一样,主要用于JVM调优和debug使用
1.Boolean 类型
      -XX:[+-]<name>  +或-表示启用或者禁用name属性 如:-XX:+UseConcMarkSweepGc 表示启用CMS垃圾收集器
2.Boolean型
 -XX<name>=value 表示name的属性值设置为value  如 XX:MaxHeapSize=1000M(等价于Xmx1000M
-Dserver.port=8080 设置服务的端口为8080
-Xms2g 设置初始化堆大小2G
-XX:<option>=<param> 设置option的值为param  如-XX:SurvivorRatio=8
-XX:+<option> 启用option 如-XX:+UseConcMarkSweepGC
-XX:-<option> 关闭option 

栗子如下:

  • -Xms2g 初始化堆大小2G
  • -Xmx2g 最大堆大小
  • -Xmn512M 新生代大小512M
  • -XX:SurvivorRatio=8 新生代Eden区/Survivor等于8
  • -Xss256k 线程栈大小,表示方法能调用到的最大深度,超过抛StackOverflowError,设置的值越大,可能会造成服务能创建的线程数越少。
  • -XX:+UseConcMarkSweepGC 使用CMS GC收集器
  • -XX:+CMSParallelReamrkEnable 启用并行标记,降低标记停顿,配合UseConcMarkSweepGC一起使用
  • -XX:UseCMSCompackAtFullCollection FULL GC的时候对年老代的压缩,减少内存碎片整理但顿时间会边长,慎用。配合UseConcMarkSweepGC一起使用
  • -XX:+UseCMSInitiatingOccupancyOnly 使用设定的回收阈值(下面指定的75%)开始CMS收集,如果不指定,JVM仅在第一次使用设定值,后续则自动调整
  • -XX:CMSInitiatingOccupancyFraction=75 使用cms作为垃圾回收使用75%后开始CMS收集,和UseCMSInitiatingOccupancyOnly成对使用
  • -XX:+HeapDumpOnOutOfMemoryError 当JVM发生OOM时,自动生成DUMP文件,非常实用
  • -XX:HeapDumpPath=D:/data/log 生成DUMP文件的路径,也可以指定文件名称,如果不指定文件名,默认为:java_pid_date_time_heapDump.hprof,结合HeapDumpOnOutOfMemoryError一起使用。