1. JVM参数列表(JDK7 Linux 64bit)
jvm参数 | 默认值 | 参考值,最终以压测结果为准 | 描述 | |
*** | -server | jvm server模式以启动 | ||
*** | -Xms | 物理内存1/64 | 4g | 初始堆大小 |
*** | -Xmx | 物理内存1/4 | 4g | 最大堆大小 |
*** | -Xmn | 2g | 年轻代大小 | |
*** | -Xss | 1024k | 256k | 1024k | 每个线程的栈大小 |
*** | -XX:PermSize= | 物理内存1/64 | 128m | 初始持久代大小 |
*** | -XX:MaxPermSize= | 物理内存1/4 | 512m | 最大持久代大小 |
*** | -XX:SurvivorRatio= | 8 | 伊甸区和幸存区比例 | |
*** | -XX:+UseConcMarkSweepGC | 对老年代使用同步标记并摖除垃圾收集算法 | ||
*** | -XX:CMSInitiatingOccupancyFraction= | 92 | 75 | 使用cms作为垃圾回收使用70%后开始CMS收集 |
*** | -XX:+UseCMSInitiatingOccupancyOnly | 使用手动定义初始化定义开始CMS收集 | ||
*** | -XX:+UseParNewGC | 对新生代使用并发垃圾收集算法 | ||
*** | -XX:+UseCMSCompactAtFullCollection | 在FULL GC的时候,对年老代的压缩 | ||
*** | -XX:CMSFullGCsBeforeCompaction= | 0 | 执行多少次FULL GC对对内存进行压缩 | |
*** | -XX:ParallelCMSThreads= | Runtime.availableProcessors()*5/8 | CMS收集线程数 | |
*** | -XX:ConcGCThreads= | (ParallelCMSThreads+3)/4 | ||
*** | -XX:+CMSClassUnloadingEnabled | 未开启 | ||
*** | -XX:ErrorFile= | ./hs_err_%p.log | 错误发生时,把错误保存到一个指定文件 | |
*** | -XX:+HeapDumpOnOutOfMemoryError | 当抛出异常java.lang.OutOfMemoryError 时,Dump heap 到文件 | ||
*** | -XX:HeapDumpPath= | ./ | 堆dump文件的存放目录 | |
*** | -Xloggc: | ./gc.log | 把垃圾收集相关日志信息记录到文件 | |
*** | -XX:+PrintGCDetails | 垃圾收集时打印具体信息 | ||
*** | -XX:+PrintGCDateStamps | 垃圾收集时打印时间戳 | ||
*** | -XX:+PrintGCApplicationStoppedTime | 打印垃圾回收期间程序暂停的时间.可与上面混合使用 | ||
*** | -XX:AutoBoxCacheMax= | 128 | 20000 | 自动装箱池的大小 |
*** | -XX:-OmitStackTraceInFastThrow | 开启 | 关闭 | 禁止截断异常堆栈信息 |
*** | -Dfile.encoding= | 操作系统编码 | UTF-8 | JVM默认编码 |
*** | -Djava.awt.headless= | true | 在linux环境下启用headless图像处理模式 | |
*** | -Dcom.sun.management.jmxremote | 启用JMX,方便zabbix监控 | ||
*** | -Dcom.sun.management.jmxremote.authenticate= | false | 是否开启JMX身份验证 | |
*** | -Dcom.sun.management.jmxremote.ssl= | false | 是否使用ssl协议 | |
*** | -Dcom.sun.management.jmxremote.port= | 11099 | JMX远程端口 | |
*** | -Djava.rmi.server.hostname= | 127.0.0.1 | JMX绑定的ip,固定配置为127.0.0.1只允许本机访问 | |
*** | -XX:MaxTenuringThreshold= | 15 | 对象被移到老年代的年龄阈值的最大值 | |
*** | -XX:PretenureSizeThreshold= | 0 | 对象超过多大是直接在老年代分配 | |
*** | -XX:MaxDirectMemorySize= | 最大堆 - 1个幸存区 | 直接内存最大值(堆外内存) | |
*** | -XX:+ExplicitGCInvokesConcurrent | 未开启 | ||
*** | -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses | 未开启 | ||
*** | -XX:+PrintCommandLineFlags | 打印在命令行中的标志 | ||
*** | -XX:+PrintFlagsFinal | JVM运行时生效的标志 | ||
*** | -XX:+PrintTenuringDistribution | 未开启 | 打印对象年龄分布情况 | |
*** | -XX:+PrintHeapAtGC | 未开启 | 打印GC前后的详细堆栈信息 | |
*** | -XX:+TraceClassLoading | 未开启 | 跟踪类的加载信息 | |
*** | -XX:+TraceClassLoadingPreorder | 未开启 | 跟踪被引用到的所有类的加载信息 | |
*** | -XX:+TraceClassResolution | 未开启 | 跟踪常量池 | |
*** | -XX:+TraceClassUnloading | 未开启 | 跟踪类的卸载信息 | |
*** | -XX:+TraceLoaderConstraints | 未开启 | 跟踪类加载器约束的相关信息 | |
*** | 必须要有 | |||
*** | 调试时使用 | |||
*** | 如果使用,必须经过压测 | |||
默认JVM值查看: java -XX:+PrintFlagsFinal -version | ||||
2. 示例