作者:悟空哥 2020-09-24 10:18:29
云计算
虚拟化 本实验的目的是讲解 JVM 的三大参数类型。在JVM调优中用到的最多的 XX 参数,而如何去查看和设置 JVM 的 XX 参数也是调优的基本功,本节以实验的方式讲解 JVM 参数的查看和设置。希望大家能有所启发。
创新互联公司主要从事做网站、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务太和,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
作者 | 悟空哥
来源 | 悟空聊架构(ID:PassJava666)
本实验的目的是讲解 JVM 的三大参数类型。在JVM调优中用到的最多的 XX 参数,而如何去查看和设置 JVM 的 XX 参数也是调优的基本功,本节以实验的方式讲解 JVM 参数的查看和设置。希望大家能有所启发。
标配参数
常见标配参数
动手实验 1 - 查看标配参数
实验步骤:
查看Java JDK 版本
- java -version
实验 1-1
可以看到Java JDK 版本为1.8.0_131
- java -help
实验 1-2
- java -showversion
实验 1-3
X 参数
X 参数简介
我们常用的javac大家都知道是把java代码编译成 class 文 Java 文件,那么 class 文件怎么去执行呢?这里用到了三个X参数来说明 class 文件怎么在虚拟机里面跑起来的。
动手实验 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 类型,另外一种是键值对类型。
动手实验 3 - 查看参数是否开启
本实验主要讲解如下内容:查看运行的 Java 程序 PrintGCDetails 参数是否开启
在 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 - 开启参数
- ctrl + c
- clear
- 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 属于哪种参数?
起了别名,但还是属于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
如何查看出厂设置和自定义设置的XX配置项动手实验
7 - 查看出厂默认设置的所有XX配置项
- java -XX:+PrintFlagsInitial -version
PrintFlagsInitial
动手实验 8 - 查看 JVM 当前所有XX配置项
- java -XX:+PrintFlagsFinal -version
PrintFlagsFinal
我们可以看到几个关键信息:
比如之前我们修改了MetaspaceSize为128m,但列表里面还是21m。
Global flags
总结如下:
出厂设置和自定义参数设置
动手实验 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性能调优还有很多要讲的,一篇是讲不完的,我会分成几篇来为大家讲述,形式主要以小实验的方式来为大家讲解。
本文转载自微信公众号「 悟空聊架构」,可以通过以下二维码关注。转载本文请联系 悟空聊架构公众号。
文章标题:秒懂JVM的三大参数类型,就靠这十个小实验了
分享链接:http://www.shufengxianlan.com/qtweb/news40/225640.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联