让建站和SEO变得简单

让不懂建站的用户快速建站,让会建站的提高建站效率!

首页
你的位置:乐彩客购彩 > 首页 >

秒懂JVM的三大参数类型,就靠这十个小实验了

发布日期:2022-05-15 15:49    点击次数:170

作家 | 悟空哥

起首 | 悟空聊架构(ID:PassJava666)

本实验的指标是莳植 JVM 的三大参数类型。在JVM调优顶用到的最多的 XX 参数,而怎样去检察和建造 JVM 的 XX 参数亦然调优的基本功,本节以实验的时势莳植 JVM 参数的检察和建造。但愿各人能有所启发。

 

标配参数

常见标配参数

-version,取得JDK版块 -help,取得匡助 -showverision,取得JDK版块和匡助

起初实验 1 - 检察标配参数

实验设施:

检察Java JDK 版块

java -version 

实验 1-1

 

不错看到Java JDK 版块为1.8.0_131

检察 Java 匡助文档
java -help 

实验 1-2

 

检察版块和匡助文档
java -showversion 

实验 1-3

 

X 参数

X 参数简介

咱们常用的javac各人都瓦解是把java代码编译成 class 文 Java 文献,那么 class 文献怎样去履行呢?这里用到了三个X参数来阐发 class 文献怎样在臆造机内部跑起来的。

-Xint:径直讲授履行 -Xcomp:先编译资腹地代码再履行 -XMixed:羼杂模式(既有编译履行也有讲授履行)

起初实验 2 - 检察和建立X参数

检察版块

java -version 

在WebIDE的铁心台窗口履行Java -version 后,不错看到我的环境是羼杂模式履行java要领的。

实验 2-1

 

修改编译模式为讲授履行模式
java -Xint -version 

在WebIDE的铁心台窗口履行敕令

实验 2-2

 

修改编译模式为只编译模式
java -Xcomp -version 

实验 2-3

 

XX 参数

XX 参数简介

XX 参数有两种类型,一种是 Boolean 类型,另外一种是键值对类型。

Boolean 类型 公式:-XX:+某个属性 大要,-XX:-某个属性 +暗示开启了这个属性,-暗示关闭了这个属性。 案例:-XX:-PrintGCDetails,暗示关闭了GC细则输出 key-value类型 公式:-XX:属性key=属性value 案例:-XX:属性metaspace=2000000,建造Java元空间的值为2000000。

起初实验 3 - 检察参数是否开启

本实验主要莳植如下履行:检察运行的 Java 要领 PrintGCDetails 参数是否开启

编写一个一直运行的 Java 要领 检察该诓骗要领的程度 id 检察该程度的 GCDetail 参数是否开启

在 WebIDE 上右键单击菜单,遴荐 New File 创建新文献

New File

 

创建文献名为 demoXXparam.java

demoXXparam.java

 

在 WebIDE 上编写 demoXXparam.java

public class demoXXparam {     public static void main(String[] args) throws InterruptedException {         System.out.println("hello XX params");         Thread.sleep(Integer.MAX_VALUE);     } } 

在 WebIDE 的铁心台窗口编译 demoXXparam.java 代码

javac demoXXparam.java  

编译代码

 

编译之后,会在现时文献夹产生咱们所编写的 demoXXparam 类的 demoXXparam.class 字节码文献

坐褥Class文献

 

在 WebIDE 上运行 demoXXparam 代码

java demoXXparam 

运行Java要领

 

输出:

hello XX params 

在 WebIDE 中新开一个铁心台窗口

Terminal->New Terminal

开启新铁心台窗口

 

检察统共的运行的java要领,-l 暗示打印出class文献的包名

jps -l 

jps

 

发现demoXXparam程度的id为 518

检察 demoXXparam 要领是否开启了PrintGCDetails这个参数

PrintGCDetails: 在发生垃圾回收时打印内存回收日记,并在程度退出时输出现时内存各区域分派情况

jinfo -flag PrintGCDetails 518 

jinfo

 

恶果如下:

-XX:-PrintGCDetails 

上头提到 -号暗示关闭,是以现时 demo 要领莫得开启 PrintGCDetails参数。

起初实验 4 - 开启参数

在 WebIDE 铁心台强制退出demoXXparam要领
ctrl + c 
然后计帐屏幕
clear 
然后以参数 -XX:+PrintGCDetails 运行 demoXXparam 要领
java -XX:+PrintGCDetails demoXXparam 

实验 4

 

输出:
hello XX params 

检察demoXXparam程度的 id

程度 id

 

不错看到demoXXparam程度 id 为 1225

检察 demoXXparam 的建立参数 PrintGCDetails

掀开一个新的铁心台窗口,履行以下敕令来检察程度为 1225 的 PrintGCDetails参数是否开启

jinfo -flag PrintGCDetails 1225 

PrintGCDetails 参数

 

不错看到PrintGCDetails是开启的,+号暗示开启。

起初实验 5 - Key-Value 类型参数值

检察元空间的值

jinfo -flag MetaspaceSize 526 

MetaspaceSize 大小

 

由此不错得出元空间的大小为 21 M。

建造元空间的值为 128 M

java -XX:MetaspaceSize=128m demoXXparam    

检察元空间的大小

jinfo -flag MetaspaceSize 1062 

调度元空间大小

 

最常见的 -Xms 和 -Xmx 属于哪种参数?

-Xms参数代表-XX:InitialHeapSize ,启动化堆内存(默许只会用最大物理内存的64分1) -Xmx:参数代表-XX:MaxHeapSize ,大堆内存(默许只会用最大物理内存的4分1)

起了别称,但仍是属于XX参数。

起初实验 6 - 建造 -XX:InitialHeapSize 和 -XX:MaxHeapSize 的值。

java -XX:InitialHeapSize=200m demoXXparam 大要 java -Xms200m demoXXparam 

检察 InitialHeapSize 参数的值,大小为 200 M。

建造 InitialHeapSize

java -XX:MaxHeapSize=200M demoXXparam 大要 java -Xmx200m demoXXparam 

检察 MaxHeapSize 参数的值,大小为 200 M。

 

建造 MaxHeapSize

 

 

推广:检察 Java 要领已建造的统共参数值

jinfo -flags <程度id> 

 

mark

 

 

Non-Defalut VM flags 代表参数类型是JVM自带的参数。 Command line 代表是用户自界说的参数

怎样检察出厂建造和自界说建造的XX建立项起初实验

7 - 检察出厂默许建造的统共XX建立项

java -XX:+PrintFlagsInitial -version  

 

 

PrintFlagsInitial

 

 

起初实验 8 - 检察 JVM 现时统共XX建立项

java -XX:+PrintFlagsFinal -version 

 

 

PrintFlagsFinal

 

 

咱们不错看到几个关节信息:

[Global flags]:全局参数,要是自界说修改了某个诓骗的参数,并不会修改全局参数

比如之前咱们修改了MetaspaceSize为128m,但列表内部仍是21m。

 

 

Global flags

 

 

:=:参数已被修改,如下图所示InitialHeapSize启动化堆内存参数已修改为264241152

回首如下:

 

 

出厂建造和自界说参数建造

 

 

起初实验 9 - 运行要领时打印XX建立选项

java -XX:+PrintFlagsFinal -XX:+InitialHeapSize=150M demoXXparam 

不错看到修改后的值为 157286400(150 M)

运行要领时打印XX建立选项

 

起初实验 10 - 检察 JVM 自动建立的大要用户手动建造的XX选项(非诓骗要领的)

java -XX:+PrintCommandLineFlags -version 

会打印出如下参数:

 

JVM 自动建立的XX选项

 

 

实验回首

本节实验课学习了怎样检察基本参数、X参数、XX参数和建造XX参数。以及用好jps和jinfo器具来检察程度和建造参数。

JVM性能调优还有好多要讲的,一篇是讲不完的,我会分红几篇来为各人通告,神色主要以小实验的时势来为各人莳植。

本文转载自微信公众号「 悟空聊架构」,不错通过以下二维码平和。转载本文请联系 悟空聊架构公众号。

 

 








    Powered by 乐彩客购彩 @2013-2022 RSS地图 HTML地图

    Copyright 站群 © 2013-2021 365建站器 版权所有