`
足至迹留
  • 浏览: 494758 次
  • 性别: Icon_minigender_1
  • 来自: OnePiece
社区版块
存档分类
最新评论

<jconsole-1> 用法简介

阅读更多
Jconsole(Java Monitoring and Management Console)是从java5开始,在JDK中自带的java监控和管理控制台,用于对JVM中内存,线程和类等的监控,是一个基于JMX(java management extensions)的GUI性能监测工具。jconsole使用jvm的扩展机制获取并展示虚拟机中运行的应用程序的性能和资源消耗等信息。

jdk5和jdk6中jconsole的主要区别
JDK 5中 Java应用(JVM)启动时必须将JMX注册到 MBeanServer中,JConsole才能监控到该JVM。即Java应用启动时要加 -Dcom.sun.management.jmxremote 启动参数。
JDK 6中 JConsole可以从%TMP%/hsperfdata_user ( user 为当前登录用户名)目录下得到启动的JVM的信息。因此Java应用启动时可以不用添加 -Dcom.sun.management.jmxremote 启动参数。鉴于目前大多数程序都是jdk6或以上,所以这里也不再强调jdk5上该程序的使用了。

一.(jdk6或以上)启动JConsole
我们可以在JDK_HOME/bin找到jconsole程序,可以直接在命令行或双击jconsole.exe文件来启动它。
JConsole可以用来监控本地应用(也就是说和jconsole运行在同一台机器上的应用)或远程应用程序(也就是和jconsole运行在不同系统或用户下的程序)。

注意:在开发环境或创建原形系统时使用Jconsole来监控本地应用非常有用。但不建议在生产环境下使用jconsole来监控本地应用,因为jconsole本身也会消耗重要的系统资源。此时推荐使用jconsole远程监控应用,保持jconsole和被监控的程序隔离。

1.1 启动本地监控
可以在命令行启动jconsole,如果jconsole已经在系统路径下可以直接输入:
>jconsole
就可以启动,否则可以输入全路径来启动。
只要jconsole启动,就会弹出选项包含所有和jconsole在同一个用户下的应用,选择某一个来连接。
如果我们已经知道想要监控的应用的进程id(pid),我们也可以在命令行里直接指定,此时这个pid必须和jconsole运行在同一个用户下(因为管理和监控系统使用操作系统的文件许可),命令行如下:
>jconsole pid

获取进程id的方法:
1)在unix或linux下可以使用ps命令查找java应用的pid。
2)windows下可以使用资源管理器(Task Manager),在查看>选择列…>pid即可。
3)无论什么系统,还可以使用jdk自带的jps命令查看所有java应用的pid。

1.2 启动远程监控
可以使用命令行启动远程监控:
>jconsole hostName:portNum
hostName是被监控应用的主机名,portNum是启动jvm时指定的jmx代理的端口号。
如果应用允许被远程监控,那么启动jvm时必须指定系统属性:
com.sun.management.jmxremote.port=portNum
注意要使用未被使用过的端口。
如在jboss的配置文件中添加远程服务端口:
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=$HOSTNAME"


或在tomcat的catalina.bat里加入:
set JAVA_OPTS= -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=7999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false


参考:http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html#gdenl

1.3 启动安全远程监控
还可以启用使用ssl(Secure Sockets Layer)安全连接的jconsole。
可以参考:
http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html#gdevo

1.4 连接示例
如果不带任何参数的启动jconsole,我们会看到下面的对话框:


local process选项里列出的是所有和jconsole在同一个用户下的本地应用程序,如果显示为灰色的则不能连接,有可能是在jdk5上启动的应用并且没有指定-Dcom.sun.management.jmxremote 或 com.sun.management.jmxremote.port选项。其他非灰色的列表项选择其中一个并点击右下角的connect就可以连接。

如果要监控remote process,则需要提供hostName:portNum和用户名/密码。如:


二. 功能介绍
jconsole一旦连接上应用,就可以看到6个tab页。分别是:
概述(overview):展示监控到的jvm概述信息。
内存(memory):内存使用的详细统计信息。
线程(threads):线程使用信息。
类(classes):类加载信息。
vm摘要(vm):jvm的信息摘要。
Mbeans: mbeans信息。
可以使用菜单栏的菜单选项随时退出或重新连接。

2.1 概述
这里图形化的同时展示了堆内存使用情况,线程,类,cpu使用情况。
可以在每个图形上面右键选择展示的时间段和保存数据。


2.2 内存使用情况


这里有个”Perform GC”(执行GC)的按钮,可以随时点击触发GC。
这个tab页上展示了堆内存,非堆内存和特定内存池的内存使用情况,可以在”Chart”和”Time Range”上选择展示哪个内存区域哪个时间段内的使用情况。

对于HotSpot jvm,内存大致分为heap区和非heap区。heap区是分代管理的,堆内存大致又分为新生代和老年代。新生代分为Eden space和Survivor space。老年代就是Tenured Gen。
非heap区又分:Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈)、Local Method Statck(本地方法栈)。具体可以参考jvm相关资料。

在这个图上可以选择其中某个区域来观测。
在左下角的”Detail”部分可以看到几个内存度量值:
1)已使用:当前已经使用的内存,包括所有对象占用的,可达的不可达的部分。
2)分配:当前应用jvm可以使用的内存,这个值会随时间变化。因为jvm可能会释放内存。分配的内存值总会大于或等于已使用的内存。
3)最大值:当前可使用的最大值。这个值也会随时间变化,因为jvm可能会尝试扩展内存。jvm里配置的内存可能是个范围,当内存不够用时会尝试扩展内存直到达到设置的最大值。
4)GC时间:gc累计花费的时间和调用的次数。这个可能会有多行,分别代表jvm使用的gc算法的统计。

图的右下角的柱状图展示的堆和非堆内存使用情况,正常情况下展示的是绿色,如果设置了内存使用阀值(在Mbeans的tab页中可以设置属性MemoryMXBean来指定内存的UsageThreshold值),超过阀值就会显示红色。

2.3 线程使用


左下角“Threads”列出的是所有活动的线程,点击某个线程名字可以展示线程名字,状态和堆栈信息。可以在最下面的”Filter”框中输入模糊匹配字符串过滤线程。图的上面部分展示了红色线代表线程的峰值。蓝色代表当前的线程数。

此外,Mbeans标签页的java.lang>threading>操作下面提供了一系列线程相关功能,比如:
findMonitorDeadlockedThreads:检测死锁,返回死锁的线程id数组,如果没有则返回null.
getThreadInfo:返回线程信息。包括线程名称,堆栈信息,如果线程阻塞,则展示阻塞在哪个锁上,并且哪个线程持有这个锁。

还可以点击本tab页最下面的“Detect DeadLock”来检测是否有死锁。


2.4 类加载监控和vm信息





这两部分信息比较明显,从名字上都能看出统计的信息。

2.5 监控和管理MBeans
最后这个标签页展示了所有注册的MBeans。


左边的树展示了当前所有运行的MBean,选择展开其中一个,就会它的所有描述,如属性,操作或通知。所有平台MXBean和各种操作和属性都可以通过JConsole的MBeans选项卡访问。

目前个人对于MBean的使用还不多,理解也很肤浅,暂时不多介绍了,以后再补充。

在查阅资料过程中发现jvisualvm,可以参考:
http://developer.51cto.com/art/200906/130424_all.htm
http://www.ibm.com/developerworks/cn/java/j-lo-visualvm/

参考资料:
http://docs.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html
http://blog.csdn.net/zyxnetxz/article/details/4771031

  • 大小: 42.3 KB
  • 大小: 201.9 KB
  • 大小: 119.9 KB
  • 大小: 38.3 KB
  • 大小: 158.6 KB
  • 大小: 172.7 KB
  • 大小: 135.2 KB
  • 大小: 208.2 KB
  • 大小: 180.4 KB
0
0
分享到:
评论

相关推荐

    资源包tools-1.8.0.jar&jconsole-1.8.0.jar下载!资源真实有效

    1. `tools-1.8.0.jar`:包含了JDK中的各种开发和调试工具,如编译器、文档生成器等,可以在Maven项目中作为依赖使用。 2. `jconsole-1.8.0.jar`:提供了图形化的Java应用监控界面,通过JMX连接到Java进程,帮助...

    jboss配置 jndi

    如果遇到问题,检查日志输出,或者使用JBoss提供的管理工具(如`jconsole`或`jboss-cli.sh`)进行诊断。 此外,JNDI还支持层次化的命名空间,这意味着你可以创建子命名空间,以更好地组织和管理你的资源。例如,你...

    tomcat配置

    charset=ISO-8859-1" pageEncoding="ISO-8859-1"%&gt; &lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt; &lt;html&gt; &lt;head&gt; &lt;meta ...

    apache-tomcat-7.0.76.zip

    1. **目录结构**: - **bin**: 包含启动和停止服务器的脚本,如`catalina.sh`或`catalina.bat`。 - **conf**: 存放Tomcat的配置文件,如`server.xml`、`web.xml`和`context.xml`。 - **lib**: 存放Tomcat运行所需...

    jconsole.1.8.0jar

    首先,`jconsole.1.8.0.jar`是Java官方JDK中的一个组件,属于Java Mission Control(JMC)的一部分,主要负责图形化展示Java应用程序的资源使用情况,包括内存、线程、类加载、垃圾收集等核心指标。这个版本适用于...

    Spring Quartz 定时器示例(Java工程版)

    1. **Quartz简介** - Quartz是一个开源的作业调度框架,用于创建、调度和执行任务。它支持复杂的时间表和触发条件,可以用来执行定时任务。 2. **Spring整合Quartz** - Spring通过提供`org.springframework....

    eclipse性能优化 <深度理解jvm>读书笔记

    《Eclipse性能优化——&lt;深度理解JVM&gt;读书笔记》主要涵盖了如何利用Eclipse IDE进行Java应用程序的性能优化,以及深入理解JVM的工作原理。在本文中,我们将探讨Eclipse的性能调优策略,以及JVM内存管理和垃圾回收机制...

    spring集成redis,集成redis集群

    至于“工具”,可能指的是使用一些辅助工具,如JConsole、RedisInsight或VisualVM等来监控Redis和Spring应用的性能,或者使用Redis Commander之类的工具进行数据的可视化管理和操作。 总的来说,集成Spring与Redis...

    JConsole_远程监控Tomcat_ricky

    一旦配置正确,JConsole 可以为用户提供有关被监控 JVM 的多种信息,包括但不限于内存使用情况、线程状态、类加载统计信息以及 MBean(Managed Bean)的状态等。 自 JDK 5 开始,JConsole 已经成为标准工具集的一...

    jconsole.jar下载

    本文将详细阐述jconsole.jar的功能、使用方法以及它在Java应用监控中的重要性。 一、jconsole.jar概述 jconsole.jar是Java SDK自带的一款图形化监控工具,它基于JMX(Java Management Extensions)技术,能够对...

    jconsole使用

    在《jdk50_ts_guide.pdf》文档中,详细介绍了 JConsole 在 JDK 5.0 版本中的使用方法和技术细节,包括如何监控远程应用程序、解析 MBean 数据以及如何解决常见的性能问题。 总结来说,JConsole 是一个强大的 Java ...

    java jvm Jconsole

    ### Java JVM JConsole详解 ...无论是对于开发人员还是运维工程师来说,掌握JConsole的使用方法都是非常有益的。它可以帮助优化Java应用程序的性能,及时发现并解决问题,从而提高系统的稳定性和可靠性。

    配置ActiveMQ 静态集群

    &lt;broker name="node1" useJmx="true" persistent="false"&gt; ``` 3. **配置网络连接**: 使用`&lt;networkConnectors&gt;`元素创建节点间的连接。例如,设置两个节点的双向连接: ```xml &lt;networkConnectors&gt; ...

    Myeclipse 使用说明

    ### Myeclipse 使用说明 ...以上内容涵盖了MyEclipse的基本使用方法及其一些高级功能介绍,希望能够帮助到正在学习或使用该工具的朋友。如果有任何疑问或遇到具体问题,请随时查阅官方文档或寻求在线社区的帮助。

    Tomcat教程-JVM相关工具.docx

    本教程将详细解释Tomcat服务器中与JVM相关的几个关键工具,包括它们的功能、使用方法及示例。 1. **jps (Java Virtual Machine Process Status tool)**: jps命令用于列出运行在指定主机上的Java虚拟机进程。通过...

    JConsole(观察分析Java程序的运行)

    - `-Dcom.sun.management.jmxremote.port=&lt;port&gt;`:指定监听的端口号。 - `-Dcom.sun.management.jmxremote.authenticate=false`:禁用身份验证。 - `-Dcom.sun.management.jmxremote.ssl=false`:禁用SSL加密。 ...

    Jconsole监控Java应用

    要使用Jconsole对Java应用程序进行监控,需要在Linux机器上安装JDK,并配置JDK的环境变量。此外,还需要在本地安装图形化连接工具,如Xmanager。 操作步骤 1. 本地启动Xmanager中的Xmanager - Passive工具,启动后...

Global site tag (gtag.js) - Google Analytics