利用JConsole工具监控java程序内存和JVM
一.找到java应用程序对应的进程PI
性能测试应用程序访问地址:http://192.168.29.218:7070/training/
部署的应用服务器为tomcat6.028
- 启动tomcat服务器后,任务管理器里可以看到多了java.exe进程,如图

PS:这里启动了多个其他程序
2.查询测试应用程序对应的进程PID号(根据端口号查找)
1) 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管理客户端。
1) 概要
概要界面可以实时查看java应用程序的堆内存使用情况、线程、类以及CPU使用情况,如图:

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

PS:重点关注使用内存的占比,使用内存与最大值之间的合理比值为1:3,已使用内存不能大于1/2最大值,否则内存存在瓶颈。
3) 线程
线程图不是重点关注,只关注该线程情况,并可以检测是否有死锁线程。

4) 类
类图并不是重点关注图,与应用程序类的多少有关,无固定值。

1) VM摘要
VM摘要图是观察JVM使用情况图

堆是由Java虚拟机(JVM,下文提到的JVM特指Sun hotspot JVM)用来存放Java类、对象和静态成员的内存空间,Java程序中创建的所有对象都在堆中分配空间,堆只用来存储对象,应用程序通过存放在堆栈(Stack)内的引用来访问堆数据,一个JVM进程只能拥有一个堆。JVM通过-Xms和-Xmx参数分别设置堆的初始值和最大值。
此图需要关注分析当前堆大小、堆大小的最大值、分配的内存,以及物理总内存和可用物理内存。
利用JConsole工具监控java程序内存和JVM的更多相关文章
- (转)利用JConsole工具监控java程序内存和JVM
转自:http://www.cnblogs.com/luihengk/p/5446279.html 一.找到java应用程序对应的进程PI 性能测试应用程序访问地址:http://192.168.29 ...
- 如何利用JConsole观察分析Java程序的运行并进行排错调优_java
如何利用JConsole观察分析Java程序的运行并进行排错调优_java 官方指导 use jconsole use jmx technology
- 如何利用 JConsole观察分析Java程序的运行,进行排错调优
原文链接:http://jiajun.iteye.com/blog/810150 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能 ...
- 如何利用JConsole观察分析JAVA程序的运行
今天在CSDN看到一朋友说关于对JVM的研究,正好看到有关于jconsole的文章,特意找了下资料,留着备用 ps:jconsole建议用JDK1.6的1.5的界面太简陋了,另外还有增强版jvisua ...
- jconsole工具监控java运行情况
jconsole是jdk自带的工具.所以要先安装jdk 1.jconsole工具的路径: 通过which jconsole来查看 /usr/local/jdk1.7.0_79/bin/jconsol ...
- 利用jdk自带的运行监控工具JConsole观察分析Java程序的运行
利用jdk自带的运行监控工具JConsole观察分析Java程序的运行 原文链接 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能 ...
- 使用linux perf工具生成java程序火焰图
pre.cjk { font-family: "Nimbus Mono L", monospace } p { margin-bottom: 0.1in; line-height: ...
- install4j 工具为java程序打包exe
用 install4j 工具为java程序打包exe 制作人:mark 制作时间:2013-05-02 用Eclipse 将程序源码打包成jar文件. 打包jar方法我不做介绍了,相信大家都会,不会的 ...
- Java 程序内存分析
转自:http://www.iteye.com/topic/528230 java程序内存主要分为了2个部分,包括stack segment(栈内存区).heap segment(堆内存区). 在分析 ...
随机推荐
- Linux下一些基本操作
一.忘记root密码 1. sudo passwd root 2. 输入新密码. 二.查看内核版本: 1.查看内核版本命令:1) cat /proc/version 2) uname -a 3) u ...
- DELL RACADM 工具使用介绍
如果iDRAC的IP或者设置出现问题,不能够链接,那么可以通过RACADM这个程序在系统层面可以对iDRAC进行设置,使用的方法以及命令都在下边. RACADM provides command li ...
- C# 还原SQL数据库(非存储过程方式)
Winform的代码,最好是在数据所在电脑上运行代码,不然会因为权限问题导致失败. 数据库备份: SqlConnection con = new SqlConnection("Data So ...
- OD: Universal Shellcode
本节讲如果开发通用的 Shellcode. Shellcode 的组织 shellcode 的组织对成功地 exploit 很重要. 送入缓冲区的数据包括: . 填充物.一般用 0x90 (NOP) ...
- a标签调用js的几种方法
我们常用的在a标签中有点击事件: <a> 标签的 href 属性用于指定超链接目标的 URL,href 属性的值可以是任何有效文档的相对或绝对 URL,包括片段标识符和 JavaScrip ...
- 黑马程序员——HTML语言
------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...
- 使用OpenXml实现生成数据字典文档(beta)
最近项目在走验收流程,之前没有仔细看SOW文档,发现需要补好多份文档,其中就有数据字典,项目组不愿意花时间太多的时间弄这些文档,也不希望以后还要重复劳动力,最终决定做一个工具,方便自己生成数据字典文档 ...
- 关于Discuz!nt论坛编辑器图片上传bug,flash域的问题
正在整discuz!nt,现在没有什么人弄了把? 上个星期突然来了个bug,搞死我了,论坛图片不能上传,上传卡在100%没反应了,于是我发现ajax发送到AttachUpload.cs时queryst ...
- Fragment的生命周期&同一Activity下不同Fragment之间的通信
Android开发:碎片Fragment完全解析(2) Fragment的生命周期 和Activity一样,Fragment也有自己的生命周期,理解Fragment的生命周期非常重要,我们通过代码的方 ...
- C# List<T>转为 DataTable
// remove "this" if not on C# 3.0 / .NET 3.5 public static System.Data.DataTable ConvertTo ...