JVM部分参数解释

你说你做过JVM调优和参数设置,请问如何盘点查看JVM系统默认值?

1、标配参数

-version
-help
java -showversion

2、X参数(了解)

-Xint:解释执行
-Xcomp:第一次使用就编译成本地代码
-Xminxed:混合模式
默认混合模式相当于先javac 再java

3、XX参数

Boolean类型
    公式:
        -XX:+或-某个属性值
        +表示开启
        -表示关闭
    jinfo举例,如何查看当前运行程序,它的某个JVM参数是否开启?具体值是多少?
    jps:可以理解成java ps命令,用于查看Java的后台进程。
    jinfo:
        jinfo -flag PrintGCDetails 进程号
 
KV设值类型:
    公式:
        -XX:属性key=属性值value
    例子:
        -XX:MetaspaceSize=128m
        jinfo -flag MetaspaceSize 进程号
        查看该进程的元空间大小。
    
        -XX:MaxTenuringThreshold=15
        经过多少次升到老年代

jinfo:
    查看当前运行程序的配置。
    公式:
        "查看一个:jinfo -flag 配置项 进程编号"
        "查看所有:jinfo -flags 进程号"

题外话:
    两个经典参数:
        -Xms和-Xmx
    这个如何解释?
        -Xms等价于-XX:InitialHeapSize
        —Xmx等价于-XX:MaxHeapSize

4、盘点家底查看JVM默认值?

方式一:查看参数
    查看一个:jinfo -flag 配置项 进程编号
    查看所有:jinfo -flags 进程号
    
方式二:查看参数
    1、主要查看初始化
        -XX:+PrintFlagsInitial
            公式:
                java -XX:+PrintFlagsInitial -version
                java -XX:+PrintFlagsInitial
    
    2、主要查看修改更新
        -XX:+PrintFlagsFinal
        公式:
            java -XX:+PrintFlagsFinal -version
            
    打印出来的=表示没修改过
    :=表示人为改过或者JVM加载不一样的时候修改过的

PrintFlagsFinal举例子,运行Java命令的同时打印出参数
    java -XX :+PrintFlagsFinal -XX:MetaspaceSize=128m T.java

方式三:可以查看到垃圾回收器
    -XX:+PrintCommandLineFlags
    打印命令行参数

三、你平时工作中用过的jVM常用基本配置参数有哪些?

1、-Xms(如果写-Xms,前面就不要加-XX:)

    memory size
    初始大小内存,默认为物理内存的1/64。
    等价于-XX:InitialHeapSize

2、-Xmx

    memory max
    最大分配内存,默认为物理内存1/4
    等价于-XX:MaxHeapSize

3、-Xss

    stack size
    设置单个线程堆栈的大小,一般默认为512k-1024k
    等价于-XX:ThreadStackSize
    
    jinfo -flag ThreadStackSize 进程号
    查出来的结果会是0,表示初始值。

4、-Xmn

    设置年轻代大小,"新生代一般是1/3堆空间,老年代一般是2/3堆空间"

5、-XX:MetaspaceSize

    设置元空间大小
        元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:
            "元空间并不在虚拟机中,而是使用本地内存。"
        因此,默认情况下,"元空间的大小受本地内存限制"
    
    老师讲的时候查了一下,物理内存16g,元可见大小为20m多一点。
    
    对元空间的调整:
        -Xms10m -Xmx10m -XX:MetaSpaceSize=1024m -XX:+PrintFlagsFinal

6、-XX:+PrintGCDetails

    输出详细GC收集日志信息

(1)GC

    从下图可以看出新生代大概占1/3的堆空间。

在这里插入图片描述

(2)FullGC

在这里插入图片描述

在这里插入图片描述

比上面的GC多了个Old区。
    

规律:
    名称:GC前内存占用->GC后内存占用 该区内存总大小

7、-XX:SurvivorRatio

在这里插入图片描述

设置新生代中eden和Survivor0/Survivor1空间的比例。
默认:
    -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

设置垃圾最大年龄
只能设置在0-15
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值