[转]使用JDK6 中的JConsole监控应用

来源:互联网 发布:淘宝taobao 编辑:程序博客网 时间:2024/05/14 02:49

其实在 JDK5中已经新加入了这个功能了. 现在的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 应用和远程的应用.

监控本地应用
    首先就是启动您要监控的应用, 例如我用JDK1.6来启动了Tomcat, 或 Eclipse也可以, 可以在任务管理器(Ctrl+Alt+Del可以调出来, 或者在任务栏点击右键)里看到进程ID, 例如我这里是6132。如果看不到进程id,请点击: 任务管理器->进程选项卡-> 查看 ->选择列->勾上"PID(进程标识符)"。

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

<script type="text/javascript"><!--google_ad_client = "pub-1832179689702023";google_ad_width = 160;google_ad_height = 600;google_ad_format = "160x600_as";google_ad_type = "text_image";//2007-05-18: 160_600google_ad_channel = "6438685831";google_color_border = "FFFFFF";google_color_bg = "FFFFFF";google_color_link = "0000FF";google_color_text = "000000";google_color_url = "3D81EE";//--></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script><iframe width="160" scrolling="no" height="600" frameborder="0" allowtransparency="true" hspace="0" vspace="0" marginheight="0" marginwidth="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1832179689702023&amp;dt=1200274977309&amp;lmt=1198640280&amp;format=160x600_as&amp;output=html&amp;correlator=1200274977309&amp;channel=6438685831&amp;url=http%3A%2F%2Fwww.java3z.com%2Fcwbwebhome%2Farticle%2Farticle2%2F2453.html%3Fid%3D1154&amp;color_bg=FFFFFF&amp;color_text=000000&amp;color_link=0000FF&amp;color_url=3D81EE&amp;color_border=FFFFFF&amp;ad_type=text_image&amp;ref=http%3A%2F%2Fwww.baidu.com%2Fs%3Fwd%3DJConsole%26cl%3D3&amp;cc=50&amp;ga_vid=1336590265.1200274977&amp;ga_sid=1200274977&amp;ga_hid=1064338769&amp;flash=9&amp;u_h=768&amp;u_w=1024&amp;u_ah=738&amp;u_aw=1024&amp;u_cd=16&amp;u_tz=480&amp;u_his=1&amp;u_java=true&amp;u_nplug=25&amp;u_nmime=99" name="google_ads_frame"></iframe>

可以看到进程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



Powered by ScribeFire.

原创粉丝点击