作者:Mars酱
声明:本文章由Mars酱编写,部分内容来源于网络,如有疑问请联系本人。
转载:欢迎转载,转载前先请联系我!
前言
我们其实在分析的时候,也并不是必须使用命令行工具才能可以分析。JDK还提供了可视化工具让大家可以在图形化的操作系统中使用。
可视化分析工具
可视化分析工具分两种:一种JDK自带;一种第三方的。
JConsole
JConsole 就是JDK自带的原生可视化工具,位置在java安装目录的bin文件夹下。它是基于 JMX 的可视化监视、管理工具。
JConsole主界面
可以分析本地java进程和远程进程,如果需要分析远程进程,远程java程序在运行时需要开启外网权限、开放接口、授权认证信息。我在网上找到以下参数:
# 值为可供外网访问的ip地址
-Djava.rmi.server.hostname=#外网访问ip地址#
# 值为可被访问的端口号
-Dcom.sun.management.jmxremote.port=60001
#是否开启认证:true开启;false关闭
-Dcom.sun.management.jmxremote.authenticate=false
# 是否启用ssl认证:true开启;false关闭
-Dcom.sun.management.jmxremote.ssl=false
以上参数需要在启动java程序时添加。
程序概况
内存监控
点击“执行 GC(G)”按钮可以强制应用程序执行一个 Full GC。
线程监控
最下面有一个"检测死锁 (D)"按钮,点击这个按钮可以自动为你找到发生死锁的线程和它们的详细信息 。
Visual VM
VisualVM 集成了命令行 JDK 工具和轻量级分析功能,是一体化 Java 故障排除工具,它基于Netbeans开发,专为开发和生产时使用而设计。关键它是开源的,不仅可以自己改造,还能自己给它添加很多插件,懂C/C++的高端玩家可以入手了。
Visual VM主界面
程序概况
内存监控
感觉这个图形化效果要比JConsole的好看点。
线程监控
监控自己的程序
我运行了自己的代码,Visual VM里面能够展示出来它的信息,如下:
我还看了看它的内存情况:
内容挺漂亮,数据也显得挺清晰的。
总结
命令行工具的作用主要作用是为了监控和分析故障。我们既可以使用JDK自带的命令行工具,也可以使用可视化分析工具,选择都很多,优点缺点都有。大家可以根据自己的选择去使用。