转载自:http://tw.myblog.yahoo.com/eoda227/article?mid=544&prev=551&next=499
使用jconsole 来监视Java 程式使用资源最近的专案都需要使用Java来开发程式,在Java程式开发中需要一些java程式debug与性能调整方面的工作,jconsole是jdk内建的工具比较好用。
Jconsole简介: Jconsole是一个JMX相容的监视工具。 它使用Java虚拟机器的JMX机制来提供运行在Java平台的应用程式的性能与资源耗费资讯。
开始jconsole(我是使用jdk6)
Jconsole应用程式位于JDK_HOME/bin目录下。
可以使用jconsole 监视本地应用程式和远端应用程式。
注意:在开发阶段或者原型阶段,使用jconsole监视本地应用程式是很有用的,但是不建议在正式环境中使用,因为jconsole本身也将显著的消耗系统资源。 推荐使用远端监视来将jconsole和被监视平台孤立开。
监视本地应用程式 (我用Eclipse来当被监测对象)
1. 开启eclipse
2. 开启jconsole,选”Local Process” 中刚才开启的eclipse,按“Connect” 来监看
Jconsole介面: Jconsole介面由以下六个选页签组成:
- Overview页签:显示JVM和被监视值的汇总资讯。
- Memory页签:显示记忆体使用资讯。
- Threads页签:显示执行绪使用资讯。
- Classes页签:显示类(class)载入资讯。
- VMSummary页签:显示JVM资讯。
- MBeans页签:显示MBeans资讯。
以下是详细介绍:
(1) Overview页签
- 有Heap记忆区使用情况
- Threads个数
- Class载入个数
- CPU使用百分比
(2) Memory 页签
以上图表显示了JVM的记忆体使用和时间的对应关系,主要包括: (a) heap和(b) non-heap
PS.
Heap and Non-heap记忆体:JVM管理两种记忆体:heap 和non-heap 记忆体,两种记忆体都是在JVM启动时建立。
Heap memory 是运行时资料区域,用于JVM为所有物件实例和伫列分配的记忆体。 Heap可能为固定值或者可变值。 垃圾收集器是一个用于回收物件占用的heap记忆体的自动化记忆体管理系统。
Non-heap memory 包含一个在所有执行序共用的方法区域(method area)和内部进程或JVM优化所需的记忆体。它存储了每一个类的结构,比如运行常量池,栏位和方法资料,构造函数和方法的代码。 方法区域逻辑上是heap的一部分,但是依赖于实现,JVM可能不进行垃圾收集或压缩。 像heap一样,方法区域可能为固定或可变大小。 方法区域所需要的记忆体没有必要是连续的。
Heap Memory Pool:
A. Eden Space(heap):大多数物件初始化时从Eden Space池分配记忆体,即是存在于此池中
B. Survivor Space(heap):此池包含的物件是那些原先在eden space中,但是已经经历过垃圾回收而仍然存在的物件。
C. Tenured Generation(heap):在surviver space中已经存在了一段时间之后的物件会移动到这个池中。
Non-Heap Memory Pool:
D. Code Cache (non-heap):储存编译的程式码和local variables。
E. Permanent Generation(non-heap):包含虚拟机器自身的所有反射资料。 比如class和mothod物件。 对于使用class data sharing的JVM,分为唯读(shared-ro)和读写(shared-rw)两个区域。
Details区域显示了几种当前记忆体度量:
Time:目前的时间。
Used:目前使用的记忆体总量。
Committed:JVM可使用的记忆体量。 Committed记忆体数量可能随时间变化而变化。 JAVA虚拟机器可能将某些记忆体释放,还给作业系统,committed记忆体可能比启动时初始分配的记忆体量要少。 Committed记忆体总是大于等于used记忆体。
Max:记忆体管理可用的最大记忆体数量。 此值可能改变或者为未定义。 如果JVM试图增加使用记忆体(used memory)超出了committed记忆体,那么即时使用记忆体小于或者等于最大记忆体(比如系统虚拟记忆体较低),记忆体分配仍可能失败。
GC Time:Garbage collection的时间。
Permanent Generation的排列如下图:
(3) Threads页签
(4) Classes页签
(5) VMSummary页签
(6) MBeans页签
3. 开启Eclipse中的Tomcat (1) 在index.jsp 上点选右键
(2) 选Run on Server 执行
(3) 执行后结果
4. 切换到jconsole视窗,观看结果
(1) Overview图有明显变化
(2) Heap memory Usage
(2) Non-Heap memory Usage
监视远端应用程式 (以Tomcat为测试对象)
1. 配置tomcat使用jconsole
修改catalina脚本
Windows平台:修改catalina.bat,在”dostart:” 后增加一行(注意是一行):
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port="9005" -Dcom.sun.management.jmxremote.authenticate="false" -Dcom.sun.management.jmxremote .ssl="false"
Unix/Linux平台:修改catalina.sh,在”dostart:” 后增加一行(注意是一行):
JAVA_OPTS="$JAVA_OPTS "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port="9005" -Dcom.sun.management.jmxremote.authenticate="false" -Dcom.sun.management.jmxremote .ssl="false"
2. 启动Tomcate (startup.bat或启动service)
3. 到远端的电脑,启动jconsole
4. 可同样观察远端Tomcat执行情况
注:如果想设定远端的管理帐号密码,可以参考
http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html 的设定
通常在发生“
Memory Error”如Exception in thread “main” java.lang.OutOfMemoryError: Java heap space
或
Exception unloading sessions to persistent storage java.lang.OutOfMemoryError: PermGen space
请调整JVM的参数设定,-XX:PermSize=256M -XX:MaxPermSize=256M等参数(依个人电脑上的资源与可能用到的记忆过大小再去设定,观察Memory页签,大概多留20%就够了)
属性详细请参考:http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp
参考来源:http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html
相关推荐
JConsole监控JVM
jvm检测工具,jconsole工具介绍,其他同类工具介绍
介绍了如何使用JConsole分析JVM,一步一步使用JConsole
JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,使用JConsole可以很方便的监控本地或者进程的Java应用.
JVM性能监控工具VisualVM Jconsole插件所需jar包 JTop.jar 点击'JConsole Plugins'按钮 点击'Add JAR/Folder'按钮, 添加JDK_HOME/demo/management/JTop/JTop.jar7)重新打开监控页面,可以看到JConsole
jconsole 的中文参考资料。JConsole 是一个基于 JMX 的 GUI 工具,用于连接正在运行的JVM,不过此 JVM 需要使用可管理的模式启动。
使用Jconsole对java的内存使用情况(JVM)进行监控参照.pdf
JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,不过此JVM需要使用可管理的模式启动。如果要把一个应用以可管理的形式启动,可以在启动是设置com.sun.management.jmxremote。JConsole能够提供被监控虚拟机...
部分章节如下,内容在附件里面大家随意下载,欢迎讨论交流。 2.1、JVM相关概念 1、什么是JVM 2、JVM能运行哪些编程语言 ...2、JVM监控工具之Jconsole 3、JVM监控工具之JProfile 加群:113035529 共同交流学习
jconsole.jar下载
jconsole使用手册,用于监控java运行状态,线程数,进程数,对象,jvm内存信息,时间等性能
jconsole – jconsole是基于Java Management Extensions (JMX)的实时图形化监测工具,这个工具利用了内建到JVM里面的JMX指令来提供实时的性能和资源的监控,包括了Java程序的内存使用,Heap size, 线程的状态,类的...
jconsole工具,内置在jdk8中,主要监控 JVM 的概览、内存、线程、类、vm概要、MBean等内容。内含jconsole的连接使用说明
是不是有时候jconsole配置后重启报错,那么试试这个,万能的远程打开jconsole
性能监控JConsole远程监控Tomcat服务
jconsole.1.8.0jar 这个包也经常maven导入报错 也是本人亲测有效
Java内存泄露_JVM监控工具介绍jstack_jconsole_jinfo_jmap_jdb_jstat
jconsole介绍 和相关配置,简单举例jconsole的配制方法
如果初次接触JConsole,应该会很有用的!