Java诊断工具之__VisualVM

一、JDK自带的工具

 

jpsJVM Process Status Tool虚拟机进程状况工具jps命令用于列出正在运行的虚拟机进程信息
jstatJVM Statistics Monitoring Tool虚拟机统计信息监视工具jstat命令用于监视虚拟机各种运行状态信息
jinfo   Configuration Info for JavaJava配置信息工具jinfo命令用于实时查看和调整虚拟机各项参数
jmapMemory Map for JavaJava内存映象工具jmap命令用于生成堆转储快照
jhatJVM Heap Analysis Tool虚拟机堆转储快照分析工具jhat命令与jmap搭配使用,来分析jmap生成的堆转储快照
jstackStack Trace for JavaJava堆栈跟踪工具jstack命令用于生产虚拟机当前时刻的线程快照
VisualVM多合一故障处理工具

二、VisualVM介绍

        VisualVM作为Java VisualVM在Oracle JDK 6~8中发布,在Java\jdk1.8.0_144\bin目录下jvisualvm.exe。但在jdk9之后,VisualVM是作为一个独立的工具发布的,可以在任何兼容的JDK上运行。

左边JDK自带的Java VisualVM,右边独立发布的VisualVM

        VisualVM使用各种技术(包括jvmstat、JMX、可服务性代理(Serviceability Agent, SA)和Attach API)监视和排除运行在Java 1.4+上的应用程序的故障。      

VisualVM特性
显示本地和远程Java进程VisualVM自动检测并列出本地和远程运行的Java应用程序(jstatd必须在远程主机上运行)。您还可以通过JMX连接手动定义应用程序。
显示进程配置和环境对于每个进程,VisualVM显示基本的运行时信息:PID、主类、传递给java进程的参数、JVM版本、JDK主进程、JVM标志和参数以及系统属性。

监控进程性能和内存

VisualVM监视应用程序的CPU使用情况、GC活动、堆和元空间/永久生成内存、加载的类的数量和运行的线程。
可视化进程中的所有线程信息

Java进程中运行的所有线程都显示在一个时间轴中,同时显示聚合的运行、休眠、等待、驻留和监视时间。

分析性能和内存使用情况

VisualVM提供了分析应用程序性能和内存管理的基本分析功能。可以使用取样和仪器分析器。

获取和显示线程转储

VisualVM获取并显示线程转储,以便立即了解目标进程中正在发生的事情。多个进程的同步线程转储有助于发现分布式死锁。

获取并浏览堆转储

VisualVM根据需要或OutOfMemoryError创建并查看.hprof内存快照,以帮助发现低效的堆使用和调试内存泄漏。

分析核心转储

VisualVM能够从核心转储中读取关于崩溃的Java进程及其环境的基本信息,并提取并打开所包含的线程和堆转储。

分析应用程序离线

VisualVM能够将应用程序配置和运行时环境以及所有获取的线程转储、堆转储和分析器快照保存到一个单独的应用程序快照中,该快照稍后可以脱机处理。

三、VisualVM插件安装

        联机下载太慢,推荐安装方式:下载npm包手工导入

        插件下载地址:https://visualvm.github.io/uc/8u131/updates.html

 四、常用插件使用介绍

        1、Visual GC

        将Visual GC工具集成到VisualVM。为每个本地或远程应用程序显示可视化GC用户界面,并通过jvmstat API提供性能计数器。Visual GC工具附加到一个HotSpot JVM上,以图形方式收集并显示垃圾收集、类装入器和HotSpot编译器性能数据。

        2、线程

        Threads Inspector在Threads选项卡中添加了一个新部分,显示所选活动线程的堆栈跟踪。

         3、Tracer

        跟踪器探测监视Java Collections框架;跟踪器探测监视Java I/O调用等。

五、VisualVM插件安装

        1、本地连接:自动显示本地已经启动的JVM进程

        2、远程连接:jstatd连接。jstatd 是JDK自带的工具

                在远程主机上,新建一个 jstatd.policy 文件,内容如下:

grant codebase "file:${java.home}/../lib/tools.jar" {  
     permission java.security.AllPermission;
};

                然后在远程主机上启动 jstatd 并且不要关闭。

jstatd -J-Djava.security.policy=jstatd.policy -p 1099

                VisualVM上远程添加jstatd连接,输入IP 端口即可 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值