JVM参数类型:
- 标配参数
- java -version
- java -help
- java -showversion
- X参数
- -Xint :解释执行
- -Xcomp:第一次使用就编译成本地代码
- -Xmixed:混合模式
- XX参数
- Boolean类型
- KV设置类型
Boolean类型
公式:+或者-某个属性值(+表示开启,-表示关闭)
如何查看一个正在运行中的java程序,它的某个jvm参数是否开启?具体值是多少?
(在cmd命令行窗口或程序窗口执行以下命令)
jps命令和jinfo命令
1)是否打印GC收集细节
- -XX:+PrintGCDetails 开启打印
- -XX:-PrintGCDetails 关闭打印

结果默认没有开启PrintGCDetails
设置开启,查看结果


是否使用串行垃圾回收器
- -XX:+UseSerialGC
- -XX:-UseSerialGC
kv设置类型
公式:-XX:属性key=属性值value
如:
- -XX:MetaspaceSize=128m 设置元空间大小
- -XX:MaxTenuringThreshold=15 该参数主要是控制新生代需要经历多少次GC晋升到老年代中的最大阈值
修改元空间大小
查看原空间大小默认值

修改元空间大小


如何查看当前运行程序的配置
- jinfo -flag 配置项 进程编号(查看指定配置)
- jinfo -flags 进程编号(查看所有配置)

两个经典参数:-Xms和-Xmx
- -Xms等价于-XX;InitialHeapSize 初始化堆大小
- -Xmx等价于-XX:MaxHeapSize 最大堆大小
查看JVM默认值
1)-XX:+PringFlagsInitial 主要查看初始默认
公式:
- java -XX:+PrintFlagsInitial -version
- java -XX:+PrintFlagsInitial

2)-XX:+PrintFlagsInitial 主要查看修改更新
公式:
- java -XX:+PrintFlagsFinal -version
- java -XX:+PrintFlagsFinal

其中=表示jvm默认的值,:=表示jvm或者用户修改过后的值
3)-XX:+PrintCommandLineFlags 打印命令行参数

4)程序运行的时候打印参数: java -XX:+PrintFlagsFinal -Xss128k T(T为java类名字)
JVM常用配置参数
1)-Xms 等价于-XX:InitialHeapSize 初始内存大小,默认为物理内存的1/64
2)-Xmx 等价于-XX:MaxHeapSize 最大分配内存,默认为物理内存的1/4
3)-Xss 等价于-XX:ThreadStackSize 设置单个线程栈的大小,一般默认为512k~1024k
查看默认的是:-XX:ThreadStackSize=0 表示使用默认的值,而默认的值依赖于平台(其他平台默认1024,windows默认的是平台的虚拟内存)
4)-Xmn 设置年轻代大小
5)-XX:MetaspaceSize 设置云空间大小
元空间的本质和永久代类似,都是JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。因此,默认情况下,元空间的大小受本地内存限制。
常用参数配置:
-Xms128m -Xmx4096m -Xss1024k -XX:MetaspaceSize=512 -XX:PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UseSerialGC
6)-XX:+PrintGCDetails 输出详细GC收集日志信息

7)-XX:SurvivorRatio 设置新生代中eden和s0/s1空间的比例
默认:-XX:SurvivorRatio=8 , Eden:s0:s1=8:1:1
假如:-XX:SurvivorRatio=4 , Eden:s0:s1=4:1:1
SurvivorRatio值就是设置eden区的比例是多少,s0/s1相同
8)-XX:NewRatio 配置年轻代与老年代在堆结构的占比
默认:-XX:NewRatio=2 新生代占1,老年代2 ,年轻代占整个堆的1/3
假如:-XX:NewRatio=4 新生代占1,老年代4,年轻代占整个堆的1/5
NewRatio值就是设置老年代的占比,剩下的1给新生代
9)-XX:MaxTenuringThreshold 该参数主要是控制新生代需要经历多少次GC晋升到老年代中的最大阈值,默认值为15。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象在年轻代的存活时间,增加年轻代被回收的概率。
posted on
浙公网安备 33010602011771号