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 2020-12-15 23:03  会飞的金鱼  阅读(705)  评论(0)    收藏  举报