您的位置首页生活百科

图解利用JConsole工具监控Java程序内存和JVM

图解利用JConsole工具监控Java程序内存和JVM

的有关信息介绍如下:

图解利用JConsole工具监控Java程序内存和JVM

本篇经验将和大家介绍利用JConsole工具监控Java程序内存和JVM的步骤,希望对大家的工作和学习有所帮助!

启动tomcat服务器后,任务管理器里可以看到多了java.exe进程,如下图所示:

查询测试应用程序对应的进程PID号(根据端口号查找)

Cmd命令:netstat -aon|findstr "7070",如下图所示:

启动JConsole监控工具

方法一:

打开cmd命令窗口,进入jdk安装路径下/bin目录,

输入命令:JConsole “PID号” ,如下图所示:

如图自动启动并打开JConsole监控界面,如下图所示:

方法二:

进入jdk安装目录bin目录下,双击运行JConsole.exe程序,选择应用程序对应的PID程序连接或双击即可,如下图所示:

对图表进行性能分析

JConsole主要是监控java应用程序,它是jdk自带的工具,一个基于JMX用于连接正在运行的JVM,会启动com.sun.management.jmxremote实现默认地JMX管理客户端。

概要

概要界面可以实时查看java应用程序的堆内存使用情况、线程、类以及CPU使用情况,如下图所示:

内存

内存界面可以在图表选择“堆内存使用情况”和“非堆内存使用情况”实时图,并显示内存详细信息:使用内存、分配:最大值等,如下图所示:

重点关注使用内存的占比,使用内存与最大值之间的合理比值为1:3,已使用内存不能大于1/2最大值,否则内存存在瓶颈。

线程

线程图不是重点关注,只关注该线程情况,并可以检测是否有死锁线程,如下图所示:

类图并不是重点关注图,与应用程序类的多少有关,无固定值,如下图所示:

VM摘要

VM摘要图是观察JVM使用情况图,如下图所示:

堆是由Java虚拟机(JVM,下文提到的JVM特指Sun hotspot JVM)用来存放Java类、对象和静态成员的内存空间,Java程序中创建的所有对象都在堆中分配空间,堆只用来存储对象,应用程序通过存放在堆栈(Stack)内的引用来访问堆数据,一个JVM进程只能拥有一个堆。JVM通过-Xms和-Xmx参数分别设置堆的初始值和最大值。

此图需要关注分析当前堆大小、堆大小的最大值、分配的内存,以及物理总内存和可用物理内存。