第二季:2.你说你做过JVM调优和参数配置,请问如何盘点查看JVM系统默认值 【Java面试题】

前言


2022 10/11 21:21

路漫漫其修远兮,吾将上下而求索


本文是根据尚硅谷学习所做笔记

仅供学习交流使用,转载注明出处


推荐

尚硅谷Java大厂面试题第2季,面试必刷,跳槽大厂神器

第二季大佬总结

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

说明

本文目录前是相关视频的名字和具体视频中思维导图的名字

题目

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

JVM的参数类型

59_JVM的标配参数和X参数

标配参数

0412

  • -version
  • -help
  • java -showversion

X参数(了解)

0527

  • -Xint:解释执行
  • -Xcomp:第一次使用就编译成本地代码
  • -Xmixed:混合模式
    解释执行+即时编译

XX参数

60_JVM的XX参数之布尔类型
Boolean类型
  • 公式:

    • -XX:+ 或者-某个属性
    • +表示开启 -表示关闭
  • Case:

    • -XX:-PrintGCDetails:表示关闭了GC详情输出
    • 是否打印GC收集细节
      • -XX:-PrintGCDetails
      • -XX:+PrintGCDetails
    • 是否使用串行垃圾回收器
package jvm2;

/**
 * @author CSDN@日星月云
 * @date 2022/10/11 22:10
 */
public class HelloGC {
    public static void main(String[] args) throws Exception {
        System.out.println("HelloGC");
        Thread.sleep(Integer.MAX_VALUE);
    }
}

无JVM参数设值

E:\IdeaProjects\JavaMS\second_2>jps -l
21732 jvm2.HelloGC
16168
5272 sun.tools.jps.Jps
23004 org.jetbrains.jps.cmdline.Launcher

E:\IdeaProjects\JavaMS\second_2>jinfo -flag PrintGCDetails 21732
-XX:-PrintGCDetails

在这里插入图片描述

E:\IdeaProjects\JavaMS\second_2>jinfo -flag PrintGCDetails 21732
-XX:-PrintGCDetails

E:\IdeaProjects\JavaMS\second_2>jps -l
16736 jvm2.HelloGC
16168
20536 org.jetbrains.jps.cmdline.Launcher
6956 sun.tools.jps.Jps

E:\IdeaProjects\JavaMS\second_2>jinfo -flag PrintGCDetails 16736
-XX:+PrintGCDetails

61_JVM的XX参数之设值类型
KV设值类型
  • 公式:-XX:属性key=属性value

不满意初始值,可以通过下列命令调整

  • case
    • -XX:MetaspaceSize=128m
    • XX:MaxTenuringThreshold=15

默认

E:\IdeaProjects\JavaMS\second_2>jinfo -flag MetaspaceSize 18864
-XX:MetaspaceSize=21807104

设值

-XX:MetaspaceSize=1024m 
E:\IdeaProjects\JavaMS\second_2>jinfo -flag MetaspaceSize 22092
-XX:MetaspaceSize=1073741824

E:\IdeaProjects\JavaMS\second_2>jinfo -flag MaxTenuringThreshold 22092
-XX:MaxTenuringThreshold=15

62_JVM的XX参数之XmsXmx坑题
jinfo举例,如何查看当前运行程序的配置

公式——jinfo -flag配置项 进程编号

Case1

E:\IdeaProjects\JavaMS\second_2>jinfo -flag InitialHeapSize 22092
-XX:InitialHeapSize=123731968

Case2

E:\IdeaProjects\JavaMS\second_2>jinfo -flags 22092
Attaching to process ID 22092, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.60-b23
Non-default VM flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=123731968 -XX:MaxHeapSize=1977614336 -XX:MaxNewSize=659030016 -XX:Metas
paceSize=1073741824 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=40894464 -XX:OldSize=82837504 -XX:+UseCompressedClassPointers -XX:+UseComp
ressedOops -XX:+UseFastUnorderedTimeStamps -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
Command line:  -XX:MetaspaceSize=1024m -javaagent:E:\IntelliJ IDEA 2021.1\lib\idea_rt.jar=1037:E:\IntelliJ IDEA 2021.1\bin -Dfile.encod
ing=UTF-8

Non-default默认设置
Command line人为设置

Case3

E:\IdeaProjects\JavaMS\second_2>jinfo -flag InitialHeapSize 22092
-XX:InitialHeapSize=123731968

E:\IdeaProjects\JavaMS\second_2>jinfo -flag UseSerialGC 22092
-XX:-UseSerialGC

E:\IdeaProjects\JavaMS\second_2>jinfo -flag UseParallelGC 22092
-XX:+UseParallelGC

E:\IdeaProjects\JavaMS\second_2>jinfo -flag MaxHeapSize 22092
-XX:MaxHeapSize=1977614336

题外话(坑题)
  • 两个经典参数: -xms和-Xmx

  • 这个你如何解释

这两个参数,还是属于XX参数,因为取了别名

-Xms 等价于 -XX:InitialHeapSize :初始化堆内存(默认只会用最大物理内存的64分1)
-Xmx 等价于 -XX:MaxHeapSize :最大堆内存(默认只会用最大物理内存的4分1)

盘点家底查看JVM默认值

63_JVM盘点家底查看初始默认值

-XX:+PrintFlagsInitial

  • 主持要查看初始默认

  • 公式

    • java -XX:+PrintFlagsInitial -version
    • java -XX:+PrintFlagsInitial
  • case

E:\IdeaProjects\JavaMS\second_2>java -XX:+PrintFlagsInitial
[Global flags]
    uintx AdaptiveSizeDecrementScaleFactor          = 4                                   {product}
    uintx AdaptiveSizeMajorGCDecayTimeScale         = 10                                  {product}
    uintx AdaptiveSizePausePolicy                   = 0                                   {product}
    ...
     bool ZeroTLAB                                  = false                               {product}
     intx hashCode                                  = 5                                   {product}


E:\IdeaProjects\JavaMS\second_2>java -XX:+PrintFlagsInitial -version
[Global flags]
    uintx AdaptiveSizeDecrementScaleFactor          = 4                                   {product}
    uintx AdaptiveSizeMajorGCDecayTimeScale         = 10                                  {product}
    uintx AdaptiveSizePausePolicy                   = 0                                   {product}

64_JVM盘点家底查看修改变更值

-XX:+PrintFlagsFinal

  • 主要查看修改更新
  • 公式
    • java -XX:+PrintFlagsFinal -version
    • java -XX:+PrintFlagsFinal -version
  • Case

​ 会将JVM的各个结果都进行打印

​ 如果有 := 表示修改过的, = 表示没有修改过的

PrintFlagsFinal举例,运行java命令的同时打印出参数

C:\Users\lenovo\Desktop\临时>more T.java

/**
 * @author CSDN@日星月云
 * @date 2022/10/11 23:01
 */
public class T {
    public static void main(String[] args) {
        int a=100;
        int b=200;
        int retValue=a+b;
        System.out.println("retValue: " +retValue);
    }
}
C:\Users\lenovo\Desktop\临时>javac T.java

C:\Users\lenovo\Desktop\临时>java T
C:\Users\lenovo\Desktop\临时>java -XX:+PrintFlagsFinal -XX:MetaspaceSize=512m T
    uintx MetaspaceSize                            := 536870912                           {pd product}

-XX:+PrintCommandLineFlags

  • 打印命令行参数
C:\Users\lenovo\Desktop\临时>java -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=123581248 -XX:MaxHeapSize=1977299968 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)

最后


2022 10/11 21:54


p58


Markdown 1937 字数 136 行数
HTML 1617 字数 69 段落


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日星月云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值