其实在 JDK 5 中已经新加入了这个功能了. 现在的 JDK 已经内置了对 VM 的监控功能. JDK 6 中这个工具变的更加好用了. 关于 JDK 5 中如何使用这个工具可以参考这里: http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html

http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html

jconsole 可以很方便的监控本机的所有 Java 应用和远程的应用.

监控本地应用

 首先就是启动您要监控的应用, 例如我用 JDK 1.6 来启动了 Tomcat, 或者 Eclipse 也可以, 可以在任务管理器(Ctrl+Alt+Del可以调出来, 或者在任务栏点击右键)里看到进程ID, 例如我这里是 6132.

接着在 JDK 安装目录中(<JDK_HOME>/bin/jconsole.exe)启动 jconsole.exe (双击或者在 cmd 里面敲入 jconsole), 主界面会提示您建立一个新连接:

可以看到进程ID, 选择它, 然后点击"连接". 这些 ID 必须都是用 JDK 1.6 的 java.exe 启动的, 否则在列表里看不到.

JConsle 能监控内存,线程,类的数目和CPU然后点击各个 Tab 可以看到详细的输出, 详细的输出包括:
内存: 堆/非堆, 峰值, 内存的各个部分, 例如 Perm, Eden 等的大小曲线图.
线程: 峰值, 所有线程的列表, 堆栈跟踪(哪个对象中的线程)等. 还可以强制执行GC.
类: 峰值, 类总数曲线图.
MBean: 一些 JVM 参数的详细 MBean 信息.

监控远程进程

首先需要在运行的应用上启用远程管理, 参数如下(简单期间就不加用户验证了):
java -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar ../demo/jfc/Java2D/Java2Demo.jar

然后连接的时候选择远程进程, 地址输入:

localhost:1090

即可.当然在别的电脑上(一般是局域网)可以输入那个电脑的IP.

综述: 使用 JConsole 可以简单的监控 Server 状态, 但是本身要占一定的资源, 不过 JVM 自带的监控, 理论上讲应该是占资源很小很小的, 可以用它来方便的了解 Web 服务器应用进程的状态. 如果要调优应用, 还是使用 JProfiler 等工具更好一些, 当然它们占的资源也更大.

后记:

jdk1.6.0\demo\management\MemoryMonitor

这里带了个很好的画内存曲线图的例子... 大家改改就可以实现同时监控多台 Server 的内存曲线了....

作者: BeanSoft@126.com

2006.12.13

本文算是自己写的一个备忘资料.

posted on 2006-12-13 15:29 BeanSoft 阅读(5194) 评论(6)  编辑  收藏 所属分类: Java SE
Comments
  • # re: 使用 JDK 6 中的 JConsole 监控应用(原创)
    坏男孩
    Posted @ 2006-12-13 16:01
    坐着沙发顶,!  回复  更多评论   
  • # re: 使用 JDK 6 中的 JConsole 监控应用(原创)
    冷面阎罗
    Posted @ 2006-12-13 18:31
    不错,以前没用过java的监控,都是用eclipse的插件监控,花费不少内存  回复  更多评论   
  • # re: 使用 JDK 6 中的 JConsole 监控应用(原创)
    Fisher
    Posted @ 2006-12-14 14:44
    不错!收藏起来好好研究研究!顶一下  回复  更多评论   
  • # re: 使用 JDK 6 中的 JConsole 监控应用(原创)
    碌碌
    Posted @ 2006-12-17 23:44
    不错,听说过这个JConsole,但没用过(不知道怎么用……),做基本的程序监控还是不错的。不过其实NetBeans里面的Profile也是相当8错的,现在RH9下面用NetBeans做东西感觉用Profile比MS下面快,占用资源也少。  回复  更多评论   
  • # re: 使用 JDK 6 中的 JConsole 监控应用(原创)
    嘎崩豆
    Posted @ 2006-12-20 19:19
    jdk1.5还没有搞明白呢,又来了新版本,你的blog设置目录倒很不错,归类一目了然  回复  更多评论   
  • # re: 使用 JDK 6 中的 JConsole 监控应用(原创)
    BeanSoft
    Posted @ 2006-12-20 19:31
    呵呵, 用的是 XTree, 本站有介绍(翻译文档), 链接自己加, 感兴趣的话偶告诉你怎么做. 就是在 Configure 里面的子标题写了一段脚本.  回复  更多评论   

标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-12-13 16:56 编辑过
 
 
相关链接:
网站导航: