欢迎光临散文网 会员登陆 & 注册

JVM调优工具介绍(1)

2023-05-03 16:44 作者:驿路梅花带雪看2  | 我要投稿

JVM调优工具介绍(1)

对大多数java开发从业人员来说,对jvm进行调优是许多java开发人员必然碰到的难题。工欲善其事必先利其器,给系统定位,知识、经验是关键,但同样选择一款趁手适合的工具同样重要!今天,笔者就根据自己多年的开发经验,为大家分享jvm一些调优工具的使用。在开始之前,我们应该意识到:工具只是知识技能的延伸。没有什么工具能包治百病,解决一切问题。

1、  jps:虚拟机进程状况工具

jps工具是jvm虚拟机的基础工具,jvm的虚拟机基础工具路径在java安装路径\bin目录下。jps命令的作用是列出正在运行的虚拟机进程,并显示虚拟机执行主类(main()方法所在的类)以及这些进程本地虚拟机唯一id(也叫LVMID),工具功能比较单一,但使用频次确是最高的。因为其他命令需要使用到LVMID。jps命令格式如下:

jps {options} {host id}

没有启动eclipse或idea默认jvm进程示例如下图(1):

图(1)没启动eclipse

启动jvm进程示例如下图(2):

图(2)启动eclipse并运行代码

解释:52020为启动类com.xia.jvm.study.chapter4.JVMUtilsTest的进程id。79364为eclipse开发工具的id。

jps常用的参数如下:

①、-q,只输出LVMID,不输出主类的参数,如图(3)所示;②、-m:输出虚拟机启动时的参数,如图(4)所示;③、-l:输出主类的全名,如果执行的是jar包,则输出jar全路径。如图(2)所示;④、-v:输出虚拟机启动时的jvm参数,如图(5)所示;

图(3)jps -q


图(4)jps -m


图(5)jps -v

2、  虚拟机统计信息监视工具

jstat(JVM Statistics Monitoring Tool)是用于监视jvm各种运行状态信息,它可以显示jvm进程中类加载、内存、垃圾回收、即时编译器等运行时数据。jstat命令格式如下:

jstat [option vmid [interval[s|ms] [count]] ]

vmid是指本地虚拟机id,如果是远程的vmid的格式为:[protocal:][//]lvmid[@hostname[:port]/servername]。

参数interval和count表示查询间隔和查询次数。示例如图(6)所示:

图(6)jstat -gc 860 300 10000

其中:-gc表示垃圾回收操作;860表示正在运行的jvmid,300表示每隔300毫秒查询一次,10000表示一共查询10000次。返回参数含义如下:

S0C                              第一个survivor的容量(KB)

S1C                              第二个survivor的容量(KB)

S0U                              第一个survivor已经使用的容量(KB)

S1U                              第二个survivor已经使用的容量(KB)

EC                                Eden区的容量(KB)

EU                                Eden区已经使用的容量(KB)

OC                               老年代的容量(KB)

OU                              老年代已经使用的容量(KB)

MC                              元空间的容量(KB)

MU                              元空间已经使用的容量(KB)

CCSC                         压缩类的容量(KB)

CCSU                         压缩类已经使用的容量(KB)

YGC                            年轻代垃圾收集的次数

YGCT                          年轻代垃圾收集消耗时间

FGC                            老轻代垃圾收集的次数

FGCT                         老轻代垃圾收集消耗时间

GCT                           垃圾收集消耗总时间

jstat常见的参数可以分为三类:类加载、垃圾收集、运行期编译状况,主要有:

-class

监视类加载、卸载数量、总空间以及类装载所耗费的时间。

-gc

表示java的堆信息,包括Eden区、survivor区域、老年代、永久代等的容量信息,已用空间,垃圾收集时间合计信息。

-gccapacity

监视内容基本和gc相同,但是输出主要关注在java堆各区域使用到的最大空间和最小空间。

-gcutil

监视内容基本和gc相同,但是输出主要关注已使用空间和占总空间的百分比。

-gccause

和gcutil功能一样,但是会额外输出导致上一次垃圾收集产生的原因。

-gcnew

新生代垃圾收集情况。

-gcnewcapacity

和gcnew功能一样,但是输出主要关注使用到的最大空间和最小空间。

-gcold

老生代垃圾收集情况。

-gcoldcapacity

和gcold功能一样,但是输出主要关注使用到的最大空间和最小空间。

-gcpremcapacity

输出永久代使用到的最大空间和最小空间。

-compiler

即时编译器编译过的方法、耗时等信息。

-printcompilation

已经被即时编译过的方法。

虽然jvm调优已经是JMC、VisualVM等可是化工具的天下,但在实际生产环境中,jstat命令依然占有一席之地。

JVM调优工具介绍(1)的评论 (共 条)

分享到微博请遵守国家法律