深入理解java虚拟机学习笔记(三)-虚拟机性能监控与故障处理工具

2020-08-03 21:34:31 浏览数 (1)

1.JDK的命令行工具

jdk自带监控和故障处理工具

名称

主要作用

jps

JVM Process Status Tool,显示指定系统内所有HotSpot虚拟机进程

jstat

JVM Statistics Monitoring Tool,用于收集HostSport虚拟机各方面的运行数据

jinfo

Configuation Info for Java,显示虚拟机的配置信息

jmap

Mammory Map for java,生成虚拟机的存储快照(heapdump文件)

jhat

JVM Heap Dump Browser,用于分析heapdump文件,会建立一个http/HTML的服务器,让用户通过浏览器查看分析结果

jstack

Stack Trace for Java,显示虚拟机的线程快照

1.1 jps

jsp运行示例:

代码语言:javascript复制
jps -mlv

选项

作用

-q

只输出LVMID,省略主类名称

-m

输出虚拟机启动时传递给main函数的参数

-l

输出主类的名称,如果执行进程是jar包,则输出jar包路径

-v

输出虚拟机进程启动时的jvm参数

1.2 jstat

jstat 虚拟机统计信息监控工具

代码语言:javascript复制
jstat命令格式:
jstat  [option vmid [interval [s|ms] [count] ] ]
表示 选项  进程ID  间隔时间[s|ms]  查询次数
如果运行的是远程主机,则vmid格式如下:
[protocol:][//]lvmid[@hostname[:port]/servername]

jstat运行示例

选项

作用

-q

只输出LVMID,省略主类名称

-class

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

-gc

监视java堆状况,包括eden区,两个survivor区,老年代,永久代等的容量、已用空间、GC时间等统计信息

-gccapacity

监视与-gc基本相同,但是输出关注java堆的各个区域的最大、最小空间

-gcutil

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

-gccause

与-gcutil基本相同,但会输出上一次GC产生的原因

-gcnew

监视新生代的GC状况

-gcnewcapacity

监视与-gcnew基本相同,但是输出关注java堆的各个区域的最大、最小空间

-gcold

监视老年代的GC状况

-gcnewcapacity

监视与-gcold基本相同,但是输出关注java堆的各个区域的最大、最小空间

-gcpermcapcacity

输出永久代的最大、最小空间

-compiler

输出JIT编译器编译过的方法,耗时等信息

-printcompilation

输出已经被JIT编译的方法

1.3 jinfo

jinfo java配置信息工具,其作用是实时查看和调整虚拟机各项参数。

代码语言:javascript复制
jinfo [option] pid

选项

作用

-flag

打印指定name参数的值

-flag [ |-]

让指定的name参数可用或者不可用

-flag =

设置一个新参数,name=value

-flags

打印全部JVM参数

-sysprops

打印JAVA系统参数

打印jvm和系统参数

1.4 jmap

jmap 用于生成堆转储快照 heapdump文件.

代码语言:javascript复制
命令格式
jmap [option] vmid

选项说明:

选项

作用

-dump

生成java转储的堆快照,格式为 -dump:[live,]format=b,file=,其中live子参数说明是否只dump出存活的对象

-finalizerinfo

显示在F-Queue中等待Finalizer线程执行的finalize方法的对象,只在Linux/Solairs平台下有效

-heap

显示java堆的详细信息,使用那种回收器、参数配置、分代状况等,只在Linux/Solairs平台下有效

-permstat

以classLoader为统计口径显示永久代内存状态。只在Linux/Solairs平台下有效

-F

当虚拟机对-dump选项没有响应时,可以使用这个参数强制生成dump快照,只在Linux/Solairs平台下有效

1.4 jhat

该命令主要与jmap搭配使用,用来分析jmap转储的转储快照。其中构建了一个微型的http/html服务器。生成dump文件的分析结果后可以通过浏览器进行查看。 通常情况下不采用jhat进行分析,一方面,分析工作需要耗费额外的资源和时间,既然都要在其他机器进行,则不需要限定于上述工具。另外一方面,jhat界面比较简陋,可以用visualVM,eclipse的Memory Analizer 等更加专业的分析工具进行替换。

1.5 jstack

jstack java堆栈跟踪工具,用于生成虚拟机当前时刻的线程快照threaddump文件。

代码语言:javascript复制
命令格式:
jstack [ option ] |vmid

选项说明:

选项

作用

-F

当正常的输出不被响应时,强制输出线程堆栈

-l

除堆栈外,显示关于锁的附加信息

-m

如果调用到本地方法,则显示C/C 的堆栈

2.JDK的可视化工具

主要包括:jConsole、jVisualVM

2.1 jConsole

2.2 jVisualVM

插件更新:

代码语言:javascript复制
https://visualvm.github.io/pluginscenters.html 
上述页面选择适合的JDK版本
如 
JDK 8 Update 131 
https://visualvm.github.io/uc/8u131/updates.xml.gz
JDK 8 Update 40 - 121 
JDK 7 Update 79 - 80 
https://visualvm.github.io/archive/uc/8u40/updates.xml.gz

jdk版本

选择 https://visualvm.github.io/archive/uc/8u40/updates.xml.gz 打开 jvisualVM -> 设置

保存即可。 之后更新插件, 安装visualGC

重启,重新进入即可

0 人点赞