TFdream / jvm-learning

深入拆解Java虚拟机 学习笔记

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

JVM常用配置参数

TFdream opened this issue · comments

可以参考 江南白衣 《关键业务系统的JVM参数推荐》:http://calvin1978.blogcn.com/?p=1602

另外,唯品会 开源的 vjtools 里面有个 jvm-options shell脚本,可以根据当前机器配置 自动输出jvm启动参数,强烈推荐!

PerfMa 是由 前阿里技术专家 李嘉鹏(寒泉子) 联合创立的公司,专注于性能评测与调优、故障根因定位与解决。公司网站:https://opts.console.perfma.com/
截图看一下:
image

JVM参数

-XX 参数被称为不稳定参数,此类参数的设置很容易引起JVM性能上的差异。

不稳定参数语法规则:
1. 布尔类型

-XX:+<option> '+'表示启用该选项
-XX:-<option> '-'表示关闭该选项

例如, jdk8中关闭UseAdaptiveSizePolicy策略,JVM增加参数:

 -XX:-UseAdaptiveSizePolicy -XX:SurvivorRatio=8

2. 数字类型

-XX:<option>=<number>

可跟随单位,例如:'m'或'M'表示兆字节;'k'或'K'千字节;'g'或'G'千兆字节。32K与32768是相同大小的。

3. 字符串类型

-XX:<option>=<string>

通常用于指定一个文件、路径或一系列命令列表。例如:-XX:HeapDumpPath=./dump.core

示例

使用 ParallelGC(吞吐量优先):

-Xms2G -Xmx2G -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC

使用CMS 垃圾收集器(尽量缩短GC停顿时间):

-Xms2G -Xmx2G -XX:+UseParNewGC -XX:+UseConcMarkSweepGC

使用G1收集器:

-Xms2G -Xmx2G -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:NewRatio=1

jvm启动参数

选项 默认值 描述
-verbose:gc 表示输出虚拟机中GC的详细情况
-Xms 默认为物理内存的1/64 初始大小内存, 等价于-XX:InitialHeapSize
-Xmx 默认为物理内存的1/4 最大分配内存,等价于-XX:MaxHeapSize
-Xss 默认512K~1024K 设置单个线程栈的大小,等价于-XX:ThreadStackSize
-Xmn 设置年轻代大小
-XX:NewRatio 默认-XX:NewRatio=2(即年轻代为老年代的1/2) 配置年轻代与老年代在堆结构中的占比
-XX:SurvivorRatio 默认-XX:SurvivorRatio=8 设置新生代中eden和S0/S1空间的比例
-XX:PermSize 表示JVM初始分配的永久代(方法区)的容量
-XX:MaxPermSize 大部分情况下这个参数默认为64M 表示JVM允许分配的永久代(方法区)的最大容量,必须以M为单位
-XX:MetaspaceSize 设置初始元空间大小
-XX:MaxMetaspaceSize 设置最大的元内存空间
-XX:MaxTenuringThreshold 默认为15 设置垃圾在年轻代的最大年龄
-XX:+PrintCommandLineFlags 查看默认设置收集器类型
-XX:-PrintGCDetails Java1.4引入,默认关闭 打印GC回收的详细信息
-XX:+HeapDumpOnOutOfMemoryError 当抛出OOM时执行HeapDump
-XX:+HeapDumpPath 指定HeapDump的文件路径和目录

垃圾收集器相关参数:

选项 描述 默认值
-XX:+UseSerialGC
-XX:+UseParallelGC
-XX:+UseParNewGC 设置年轻代为并行收集,可与CMS收集同时使用JDK5.0以上
-XX:ParallelGCThreads 并行收集器的线程数
-XX:+UseParallelOldGC
-XX:+UseConcMarkSweepGC
-XX:+UseG1GC 使用G1垃圾收集器

相关资料