有两种类型的 hotspot jvm ,即 “service” 和 “client" 。 jvm 可根据内存,机器情况,自动选择jvm类型。 如果想手动选择,则可通过 -service
和 -client
参数指定jvm 类型。
-
servcie
: 服务端类型,有更多的堆内存,并行的垃圾收集器,运行时可更大程度的优化代码
-
client
: 客户端类型,相比服务端类型,有更少的堆内存
-
查看jvm版本以及类型
java -version
jvm 参数分类
-
标准参数
-
稳定的,将来的jvm版本不会改变的参数,可通过 java
或者 java -help
命令检出的
-
X参数
-
非标准化的参数,将来的jvm 版本中可能会改变的,可通过 java -X
命令检出,但并不是所有该类型都能检出
-
XX 参数
-
不稳定的,甚至是在实验阶段的参数,甚至长时间段内未被列出,该类型参数都以 -XX
开头,但是随后的语法不同,取决于参数的类型。 可通过 -XX:+PrintFlagsFinal
或者 -XX:+PrintFlagsFinalInitial
输出所有XX类型参数信息(参数类型,参数名称,默认值=,被用户或者jvm赋值 :=)
对于布尔类型的参数,我们有”+”或”-“,然后才设置JVM选项的实际名称。例如,-XX:+用于激活选项,而-XX:-用于注销选项。 -XX:+PrintCompilation
:输出编译信息 -XX:+ClTime
: 关闭jvm 时输出编译时效统计信息 -XX:+PrintCommandLineFlags
: 输出所有被用户或者jvm 设置过的XX参数以及值
对于需要非布尔值的参数,如string或者integer,我们先写参数的名称,后面加上”=”,最后赋值。例如, -XX:=给赋值。
jvm 调优参数
-
Xms128m
: 初始化堆内存大小为128M,不包括永久代的空间,是 -XX:InitailHeapSize=128m
的缩小
-
Xmx2g
: 最大堆内存大小 为 2G,不包括永久代的空间, 是 -XX:MaxHeapSize=2g
的缩小
-
-XX:+HeapDumpOnOutOfMemoryError
: jvm 发送内存溢出时自动生成堆内存快照
-
-XX:HeapDumpPath=
:设置堆内存快照生成的路径
-
-XX:OnOutOfMemory=""
: 可接收一串指令,当堆内存溢出时,执行指令
-
-XX:PermSize=
: 初始化永久代大小
-
-XX:MaxPermSize=
: 最大永久代大小
原文
https://juejin.im/post/5df8ab6e6fb9a016561ca955