前言
2022 10/11 21:21
路漫漫其修远兮,吾将上下而求索
本文是根据尚硅谷学习所做笔记
仅供学习交流使用,转载注明出处
推荐
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)
最后
2022 10/11 21:54
p58
Markdown 1937 字数 136 行数
HTML 1617 字数 69 段落