深入理解JVM(六)——JVM的参数类型
1.标配参数
2.X参数
3.XX参数-Boolean类型
4.XX参数-KV类型
5.如何查看开启了哪些JVM参数
1.标配参数
通常,在我们第一天接触JAVA的时候,我们就接触过标配参数。我们在安装完java环境后,我们会输入以下参数来查看java是否安装成功:
java -version
-help
-showversion
【深入理解JVM(六)——JVM的参数类型】
文章图片
2.X参数(了解)
对于X参数,我们平时也不会去碰他,我们常用的javac命令,就是把java文件编译成class文件,那么class文件怎么去执行呢?这里用到了三个X参数来说明class文件怎么在虚拟机里面跑起来的。
-Xint:直接解释执行
解释:由解释器现场解释执行,不生汇编语言或者机器语言。
-Xcomp:先编译成本地代码再执行
解释:编写好的代码首先被编译程汇编语言或者是机器语言,然后执行。多用在高级语言上。
-XMixed:混合模式(既有编译执行也有解释执行)
3.XX参数-Boolean类型(重要)
这是我们在生产中用的比较多的参数类型,我们先来看一看它的格式:
公式: -XX:+或者-某个属性值
+表示开启
-表示关闭
我们先开看一个例子
开启打印GC信息:
-XX:+PrintGCDetails
我们将它填入VM option里,运行起来,我们就会看到垃圾收集信息:
文章图片
文章图片
我们复制一条垃圾收集信息来分析一下:
[GC (Allocation Failure)
[PSYoungGen: 269254K->776K(304640K)]
这条日志表示GC前young区和GC后young区的内存大小区别 ,GC前:269254 GC后:776
670669K->459534K(1000960K), 0.0303594 secs]
这条日志表示堆的总内存大小,GC前670669,GC后459534K
[Times: user=0.05 sys=0.03, real=0.03 secs]
这条表示执行时间。
再来看一条Full GC
[Full GC (Ergonomics)
[PSYoungGen: 235302K->0K(304640K)]
同上,年轻代收集情况
[ParOldGen: 688134K->344783K(696320K)] 923437K->344783K(1000960K),
老年代收集情况
[Metaspace: 3263K->3263K(1056768K)], 0.0394456 secs]
永久代收集情况
[Times: user=0.13 sys=0.02, real=0.04 secs]
耗时
4.XX参数-KV类型(重要)
我们来看一下 KV类型的参数
公式-XX:属性key=属性value
例子:
-XX:MetaspaceSize=128M
我们将JVM的元空间设置为128M。
那可能问题就来了,我们平时的开发中最最最常用的-Xmx和-Xms又是什么参数?
这是因为 -Xmx和-Xms 简写了。
-Xms其实等同于 -XX:InitialHeapSize
-Xmx其实等同于 -XX:MaxHeapSize
5.如何查看开启了哪些JVM参数
我们简单地介绍了一下JVM参数的格式,那么如何查看我们服务中的JVM参数配置呢?
我们先来介绍一个命令 jps -l
这个命令是显示目前所有java进程的命令,我们试着使用一下:
我们先开启命令行窗口
文章图片
接下来,我们输入 jps -l
文章图片
就可以打印出所有JAVA进程了。
前面那一串数字是进程编号,后面那一串名字是进程。
接下来我们查看一下,这个进程开启了什么参数
输入jinfo -flag 参数名 id 可以查看具体的参数配置内容:
文章图片
输入jinfo -flags id 可以查看具体的参数配置内容:
文章图片
今天我们就介绍到这里,关于常用的JVM参数,我们将会在下节进行详细介绍。
推荐阅读
- 深入理解Go之generate
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 由浅入深理解AOP
- 逻辑回归的理解与python示例
- 【1057快报】深入机关,走下田间,交通普法,共创文明
- 生发知识,带你深入了解
- 「按键精灵安卓版」关于全分辨率脚本的一些理解(非游戏app)
- 深入理解|深入理解 Android 9.0 Crash 机制(二)
- 不理解句意,你还想做对所有GRE填空题()
- 深入浅出谈一下有关分布式消息技术(Kafka)