JConsole工具是JDK自带的图形化性能监控工具。 JConsole 工具允许您查看Java 应用程序的运行摘要并监视堆信息、持久空间使用情况、类加载等。
本文主要介绍JConsole工具的基本使用方法。
一,JConsole连接Java程序
JConsole 程序位于%JAVA_HOME%/bin 目录中。启动程序后,您需要指定与Java 应用程序的连接,如图6.25 所示。
所有本地Java 应用程序都列在“新建连接”对话框中。只需选择您想要连接的程序即可。远程进程部分还有一个用于连接到远程进程的文本框,输入要连接的正确远程进程地址。
如果需要使用JConsole 连接到远程进程,则必须在启动远程Java 应用程序时添加以下参数。
-Djava.rmi.server.hostname用于指定运行Java应用程序的计算机的IP地址,-Dcom.sun.management.jmxremote.port用于通过JMX来指定托管进程。用于管理的端口号。如果基于上述配置启动的Java应用程序通过JConsole进行远程连接,则只需进入以下远程进程:
二,Java程序概况
连接到Java 应用程序时,您可以查看该应用程序的概览,如图6.26 所示。图中的四条线图分别显示了堆内存使用情况、系统线程数量、加载的类数量和CPU使用情况。
三,内存监控
切换到内存选项卡允许JConsole 显示有关当前内存的详细信息。这包括总体堆内存信息以及伊甸园空间、幸存者空间和老年代使用详细信息。它还包括非堆空间或永久代的使用。点击右上角的Perform GC按钮,强制应用程序执行FullGC操作,如图6.27所示。
注意:JConsole 允许您查看有关堆的详细信息,包括堆大小、使用情况、eden 空间大小、survivor 空间大小、持久空间大小等。
四,线程监控
JConsole 的“线程”选项卡允许开发人员监视程序中的线程,如图6.28 所示。 JConsole 在屏幕底部显示系统中的线程数以及程序中的所有线程。单击线程名称可显示该线程的堆栈信息。
单击“检测到死锁”按钮可自动检测多线程应用程序中的死锁情况。图6.29 显示了JConsole 检测到的死锁线程。
本例中的应用代码可以参考6.3.6节中的jstack命令示例。
注意:JConsole 可以让您轻松查看系统中的线程信息并快速识别死锁问题。
五,类加载情况
JConsole 类选项卡(如图6.30 所示)显示系统加载的类的数量。详细信息列还显示已卸载的类的数量。
六,虚拟机信息
在虚拟机摘要选项卡中,JConsole 显示当前应用程序执行环境,包括虚拟机类型、版本、堆信息、虚拟机参数等,如图6.31 所示。
注意:VM概览显示当前Java应用程序的基本信息,包括虚拟机类型、虚拟机版本、系统线程信息、操作系统内存信息、堆信息、垃圾收集器类型、JVM参数和类路径。
七,MBean管理
MBean 选项卡允许您通过JConsole 管理MBean,包括查看或设置MBean 属性以及运行MBean 方法。图6.32 显示了选择Memory 的Verbose 属性的MBean 管理界面。通过更改Verbose属性值,您可以在程序执行过程中动态打开或关闭GC操作的输出信息。
MBean的类型很多,功能也比较强大。本节列出了一些常用的MBean 操作,如表6.2 所示。
注意:您可以通过JConsole 统一管理Java 应用程序中的Mbean。
八,使用插件
除了基本功能外,JConsole 还支持插件扩展。您可以在JDK 安装目录%JAVA_HOME%\demo\management\JTop 中找到内置的JConsole 插件。使用以下命令在JConsole 中加载并启动插件:
JConsole启动后,您可以连接到任何Java应用程序并进入JTop页面,如图6.33所示。
JTop 插件根据CPU 时间对线程进行排序,并将花费最多CPU 时间的线程显示在表的顶部。该插件可以让开发者快速找到消耗CPU时间最多的线程名称,并通过线程快照找到线程代码。
JTop插件的完整源代码位于JDK安装目录中。有兴趣的读者可以修改JTop源代码以显示更多线程信息。
本文给大家讲解的内容是Java性能调优六大工具:JConsole工具
以下文章介绍了Java 性能调优的六种主要工具。 VisualVM一体化工具如果您喜欢这篇文章,请转发这篇文章并关注小编。
版权声明:本文转载于今日头条,版权归作者所有。如有侵权,请联系本站编辑删除。