一、JVM的参数类型
标配参数
java -version
java -help
java -showversion打印产品版本并继续
X参数(了解)
-Xint 在解释模式下,-Xint会强制JVM执行所有的字节码,这会降低运行速度,通常低10倍或更多。 编译快,运行慢。
-Xcomp 与-Xint正好相反,JVM在第一次使用时会把所有的字节码编译成本地代码,从而带来最大程度优化。但是很多应用在使用-Xcomp也会有一些性能损失,当然这比使用-Xint损失的少,原因是-xcomp没有让JVM启用JIT编译器的全部功能。JIT编译器可以对是否需要编译做出判断,如果所有代码都进行编译的话,对一些只执行一次的代码就毫无意义了。编译慢,运行快。
-Xmixed 是混合模式,将 解释模式与编译模式进行混合使用,由jvm自己决定,这也是jvm默认的模式,也是推荐使用的模式。
![](https://i-blog.csdnimg.cn/blog_migrate/f90ac986c5a841f7e6d38f8f47aef8ec.png)
XX参数:主要用于jvm调优和debug操作
Boolean类型
格式:-XX:[+-]<name> 表示启用或禁用<name>属性。
如:-XX:+DisableExplicitGC 表示禁用手动调用System.gc()
如:-XX:+UseSerialGC使用串行垃圾回收器
KV设值类型
格式:-XX:<name>=<value> 表示<name>属性的值为<value> 。
如:-XX:NewRatio=1 表示新生代和老生代的比值。
如:-XX:MetaspaceSize=128m设置元空间的大小
如:-XX:MaxTenuringThreshould=15设置新生代对象经过多少次可以晋升到老年代
-XX:+PrintGCDetails打印GC收集细节
![](https://i-blog.csdnimg.cn/blog_migrate/04cdf8e8ef01a354eaed73dbbc6e5034.png)
两个经典参数-Xmx和-Xms
-Xmx和-Xms表示设置JVM的最大内存和最小内存,它们不是X参数,而是XX参数。
-Xmx等价于-XX:MaxHeapSize,JVM最大允许分配的堆内存,按需分配
-Xms等价于-XX:InitialHeapSize,JVM初始分配的堆内存
-Xss设置堆栈,也是XX参数,等价于-XX:ThreadStackSize
二、jinfo使用
2.1查看一个正在运行中的java程序,它的某个jvm参数是否开启?具体值是多少?
jsp查看进程编号
jinfo查看当前运行程序的配置:公式:jinfo -flag 配置项 进程编号
jinfo -flag PrintGCDetails 30124
![](https://i-blog.csdnimg.cn/blog_migrate/f43d9f8d1a84a7a74935bfa7af8123cb.png)
2.2 查看运行时参数的值:
jinfo -flag MaxHeapSize 31624
jinfo -flag InitialHeapSize 31624
![](https://i-blog.csdnimg.cn/blog_migrate/1d5e00005af50bc75e762fb6f3cc71ac.png)