bingmous

欢迎交流,不吝赐教~

导航

jvm2

Java运行时参数

官网:

标准参数、-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

posted on 2023-03-29 21:02  Bingmous  阅读(27)  评论(0编辑  收藏  举报