JVM标配、X和XX参数

JVM标配、X和XX参数

大厂面试题:

1、JVM垃圾回收时候如何确定垃圾?是否知道什么是GC Roots

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

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

4、强引用、软引用、弱引用、虚引用费别是什么?

5、请你谈谈对OOM的认识

6、GC垃圾回收算法与垃圾收集器的关系?分别是什么请你谈谈?

7、 怎么查看服务器默认的垃圾回收器是哪一个?

       生产上如何配置垃圾收集器的?

       谈谈你对垃圾收集器的理解?

8、G1垃圾收集器

9、生产环境服务器变慢,诊断思路和性能评估谈谈?

10、假如生产环境CPU占用过高,请谈谈你的分析思路和定位。

11、对于JDK自带的监控和性能分析工具用过哪些?一般你怎么用的?

 

2、JVM的参数类型

(1)标配参数

    java -version

    

    java -help

    

    java -showversion

    

    在JDK各个版本之间稳定,很少有大的变化。

(2)X参数(了解)

    

    -Xint      解释执行

    

    -Xcomp 第一次使用就编译成本地代码(先编译)

    

    -Xmixed 混合模式(先编译后执行)

    

(3)XX参数

    【1】Boolean类型XX参数

        公式:-XX:+ 或者-XX:- 某个属性值(+表示开启,-表示关闭)

        案例:   

        1)是否打印GC收集细节

               -XX:+PrintGCDetails

               -XX:-PrintGCDetails

 

        2)是否使用串行垃圾收集器

               -XX:+UseSerialGC

               -XX:-UserSerialGC

    代码验证:

    没有配置任何JVM -XX:+某个属性值

     

       启动main方法

     

       在Terminal使用JDK工具查看是否配置JVM参数

       jps -l 表示查看java运行的进程号

       jinfo -flag PrintGCDetails 表示查看JVM是否配置PrintGCDetails参数

       -XX:-PrintGCDetails 中减号表示没有配置PrintGCDetails参数

    

    配置JVM -XX:+PrintGCDetails参数

    

    重新启动main方法

     

    

       重新在Terminal使用JDK工具查看是否配置JVM参数

       jps -l 表示查看java运行的进程号

       jinfo -flag PrintGCDetails 表示查看JVM是否配置PrintGCDetails参数

       -XX:+PrintGCDetails 中加号表示配置了PrintGCDetails参数

     

    【2】KV设值类型

           公式:-XX: key(属性)= value(属性值)

           案例:

           查看-XX:MetaspaceSize=默认值大小

           -XX:MetaspaceSize=21807104(大约22MB)

           

           添加-XX:MetaspaceSize=1024m参数      

           

          查看-XX:MetaspaceSize=人工设置值大小

         -XX:MetaspaceSize=1073741824(1024MB)

         

         查看-XX:MaxTenuringThreshold=默认值大小

         -XX:MaxTenuringThreshold=15表示年轻代对象年龄达到15岁就会进入老年代

         

    【3】jinfo查看当前运行程序配置

         公式:jinfo -flag 配置项 进程号

         案例:

         查看JVM所有配置项(默认+人工配置)

         jinfo -flags 进程号

         Non-default VM flags表示JVM默认参数

         Command line表示人工配置参数

         

        人工配置的JVM参数

        

    【4】如何解释-Xms和-Xmx参数属于XX参数

      -Xms和-Xmx两个经典参数看起既不像Boolean类型XX参数,也不像KV设值类型XX参数。那为什么-Xms和-Xmx又属于XX参数?

       -Xms = -XX:InitialHeapSize

       -Xmx = -XX:MaxHeapSize

 

2、盘点家底JVM默认值

(1)第一种查看JVM默认值方式

       jinfo -flag 参数项 进程号

       jinfo -flags 进程号

(2)第二种查看JVM默认值方式

       公式:java -XX:+PrintFlagsInitial(查看jvm未更改的默认参数)

      

       公式:java -XX:+PrintFlagsFinal(查看jvm已经更改过的参数)

       :=表示jvm启动时候默认修改或者人工更改过的参数

       =表示jvm没有更改过的默认参数

    uintx InitialHeapSize                          := 266338304                           {product} 默认为操作系统64/1内存(我本机内存为16G)

      

      本机内存:

      

(3)-XX:+PrintFlagsFinal举例

        运行java命令的同时打印jvm参数

        java -XX:+PrintFlagsFinal UpdateJVMParamDemo

(4)-XX:+PrintCommanLineFlags打印命令行参数

        

 

 

  • 0
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值