目录
Java运行时参数
官网:
- jdk8:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html
- jdk11:https://docs.oracle.com/en/java/javase/11/tools/java.html#GUID-3B1CE181-CD30-4178-9602-230B800D4FAE
标准参数、-X参数、-XX参数,700多个
java -XX:+PrintFlagsFinal -version | grep manageable # 可以通过jinfo动态修改的参数,非常有限
常用jvm参数:
# 打印设置的XX选项和值
-XX:+PrintCommandLineFlags # 程序运行前打印用户或jvm设置的XX选项
-XX:+PrintFlagsInitial # 打印出所有XX选项的默认值
-XX:+PrintFlagsFinal # 打印出XX选项在运行程序时生效的值
-XX:PrintVMOptions # 打印出jvm参数
# 堆、栈、方法区
## 栈
-Xss128k # 设置每个线程的栈大小为128k,等价于-XX:ThreadStackSize=128k
## 堆
-Xms1000m # 设置jvm初始堆大小,等价于-XX:InitialHeapSize=1000m
-Xmx1000m # 设置jvm最大堆,等价于-XX:MaxHeapSize=1000m
-Xmn100m # 设置年轻代大小,等价于-Xx:NewSize=100m,-XX:MaxNewSize=100m,官方推荐设置为堆大小的3/8
-Xx:NewSize=100m # 设置初始年轻代
-XX:MaxNewSize=100m # 设置最大年轻代
-XX:SurvivorRatio=8 # 设置Eden区与一个survivor区的比值,默认为8,需显示设置才生效 ,
-XX:+UseAdaptiveSizePolicy # 自动选择各区域大小比例,默认开启,自动分配Eden与survivor的比值,要想手动设置的
-XX:NewRatio=2 # 设置老年代与新生代比例,默认是2
-Xx:PretenureSizeThreshold=1024 # 让大于此阈值的对象直接放入老年代,单位字节,只丢Serial、ParNew收集器有效
-XX:MaxTenuringThreshold=15 # 新生代每次minorGC年龄加1,当年龄大于此值时进入老年代,默认值15
-XX:+PrintTenuringDistribution # 让jvm每次minorGC之后都打印出当前使用的survior中对象的年龄分布
-XX:TargetSurvivorRatio # 表示minorGC之后survivor中占用空间的期望比例
## 方法区
### 永久代
-XX:PermSize=256m # 设置永久代初始值为256m
-XX:MaxPermSize=256 # 设置永久代最大值为256m
### 元空间
-XX:MetaspaceSize # 初始空间大小
-XX:MaxMetaspaceSize # 最大元空间大小,默认没有限制
-XX:+UseCompressedOops # 压缩对象指针
-XX:+UseCompressedClassPointers # 压缩类指针
-XX:CompressedClassSpaceSize # 设置klass metaspace的大小 默认1G
# 直接内存
-XX:MaxDirectMemorySize # 指定直接内存容量,若未指定,默认与堆最大值一样
# OOM相关
-XX:+HeapDumpOnOutOfMemoryError # 表示当oom时,把heap转存到文件
-XX:+HeapDumpBeforeFullGC # fullGC前,把heap转存到文件,跟上面的二选一即可,默认都是关闭的
-XX:HeapDumpPath=xxx # 指定heap转存文件的存储路径
-XX:OnOutOfMemoryError=xxx.sh # 指定一个可执行程序或脚本,当OOM发生的时候,去执行
# 垃圾收集器相关
# GC日志相关
# 通过java代码获取jvm参数
分析GC日志
GCEasy在线分析
GCViewer