常用的JVM参数

常用的JVM参数

内容会持续补充

堆内存相关

序号 参数 解释
1 -Xms JVM启动时申请的初始Heap值, eg:-Xms1G 堆内存初始值为1G
2 -XX:InitialHeapSize JVM启动时申请的初始Heap值,eg:-XX:InitialHeapSize=1024m, 堆内存初始值为1G
3 -XX:MaxHeapFreeRation 缩小堆内存的时机,默认当堆中空闲内存大于70%时,会减小堆内存,最小到-Xms指定值; eg:-XX:MaxHeapFreeRation=70,
4 -Xmx JVM可申请的最大Heap值,eg:-Xmx2g 堆最大值为2G
5 -XX:MaxHeapSize JVM可申请的最大Heap值,-XX:MaxHeapSize=2048m 堆最大值为2G
6 -XX:MinHeapFreeRatio 扩大堆内存的时机,默认当堆内存1使用率大于40%时,会扩大堆内存,最大到-Xmx指定值, eg:-XX:MinHeapFreeRatio=50,堆区内存使用到达50%触发堆区扩容
7 -Xmn Java Heap Young区大小, eg:-Xmn512m,新生代大小为512MB
8 -XX:SurvivorRation survivor区和Eden区大小比率,eg:-XX:SurvivorRation=8, s0:s1:eden = 1:1:8
9 -XX:NewRatio 新生代和老年代的占比,eg:-XX:NewRatio=4 新生代:老年代=1:4
10 -XX:PretenureSizeThreshold 指定大对象的界限,超过这个值,对象会直接在老年代分配。eg:-XX:PretenureSizeThreshold=1024 对象大小超过1024子节,直接在老年代分配内存

栈相关

序号 参数 解释
1 -Xss 指定单个虚拟机栈的大小, eg:-Xss1m 设置虚拟机栈大小为1MB
2 -XX:ThreadStackSize 指定单个虚拟机栈的大小, eg:-XX:ThreadStackSize=1m 设置虚拟机栈大小为1MB
栈大小太小会导致栈深度不够抛出StackOverflowException异常,栈太大又会导致线程可以创建的线程数减少。
另外,操作系统用对单个线程可以创建的栈数量又限制,线程并不能无限生成

方法区相关

序号 参数 解释
1 -XX:PermSize 方法区初始容量, eg:-XX:PermSize=64m, 方法区初始大小为64M
2 -XX:MaxPermSize 方法区初始容量, eg:-XX:PermSize=512m, 方法区最大为512M

垃圾收集器

序号 参数 解释
1 -XX:+UseSerialGC 新生代开启使用Serial垃圾收集器,老年代需要使用SerialOld
2 -XX:-UseSerialGC 新生代关闭使用Serial垃圾收集器
3 -XX:+UseParNewGC 新生代开启使用ParNew垃圾收集器, 老年代需要使用功能CMS
4 -XX:-UseParNewGC 新生代关闭使用ParNew垃圾收集器
5 -XX:+UseConcMarkSweepGC 老年代开启使用CMS垃圾收集器
6 -XX:-UseConcMarkSweepGC 老年代关闭使用CMS垃圾收集器
7 -XX:+UseG1GC 开启使用G1垃圾收集器
8 -XX:-UseG1GC 关闭使用G1垃圾收集器

GC策略

序号 参数 解释
1 -XX:+PrintGCDetails 打印详细GC日志
2 -XX:+PrintGCApplicationStoppedTime 打印暂停时间
3 -XX:InitialTenuringThreshol 进入老年代最小的GC年龄, 每经历一次Minor GC,年龄+1
4 -Xloggc: 设置GC日志文件路径
5 -XX:+PrintHeapAtGC GC完成后打印JVM堆中各个区域使用情况
6 -XX:+PrintTenuringDistribution 打印存活实例的年龄信息
7 -XX:+HeapDumpBeforeFullGC FULL GC前生成dump文件
8 -XX:+HeapDumpAfterFullGC FULL GC后生成dump文件
9 -XX:HeapDumpPath 设置Dump保存的路径

其他

序号 参数 解释
1 -XX:+PrintFlagsInitial 查看所有的JVM参数,可以用来模糊查找
posted @ 2022-10-23 18:42  bmilk  阅读(81)  评论(0编辑  收藏  举报