2.你说你做过JVM调优和参数配置,请问如何盘点查看JVM系统默认值
说明
本文目录前是相关视频的名字和具体视频中思维导图的名字
题目
2.你说你做过JVM调优和参数配置,请问如何盘点查看JVM系统默认值
JVM的参数类型
59_JVM的标配参数和X参数
标配参数
- -version
- -help
- java -showversion
X参数(了解)
- -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)