转自:http://www.cnblogs.com/catkin...介绍两个jdk1.8自带的可视化监控工具Jconsole:Java6.x是JMX提供了一系列用于监控和管理虚拟机的API,随SDK发布的JConsole就是使用这些API监控虚拟机的工具。JConsole可以提供被监控虚拟机的内存、线程、类加载、MBean等信息,从而实时监控服务器的运行状态。JVisualVM:是Netbeans的profile子项目,已包含在JDK6.0update7中(java启动时不需要具体参数,监控工具在bin/jvisualvm.exe),可以监控线程,内存情况,查看方法的CPU时间和内存中的对象,已经GC过的对象,反向查看分配的栈(比如哪些对象分配了100个String对象)。VisualVM和JConsole可以方便地监控本地JVM。只要应用程序在运行,我们就可以连接到本地JVM,并从VisualVM监控JVM。远程服务器上的JVM监控需要一些额外的配置。VisualVM目前支持两种监控方式:Jstatd方式和基于JMX的方式。在这篇博客中,我们首先介绍一下Jstatd的方法。jstatd是一个rmi服务器应用程序,用于监控jvm的创建和终止,并提供接口让监控工具可以远程连接到本地jvm。jstatd位于$JAVA_HOME/bin目录中。具体使用方法如下:1、在需要监控的服务器上启动RMI服务。通过jstatd启动RMI服务。首先在服务器jdk路径(/java_home/bin)配置java安全访问新建文件名:jstatd.all.policy内容:grantcodebase"file:${java.home}/../lib/tools.jar"{权限java.security.AllPermission;};然后输入jstatd.all。在策略所在目录下,通过以下命令启动RMI服务:./jstatd-J-Djava.security.policy=jstatd.all.policy或./jstatd-J-Djava.security.policy=jstatd。all.policy-J-Djava.rmi.server.hostname=服务器IP2.启动客户端的VisualVM,添加远程主机VisualVM,在/java_home/bin目录下连接后会自动加载运行状态服务器JVM。在Jstatd监控方式下,JConsole不能启用,因为JConsole登录需要端口号。此外,我们还可以为VisualVM安装一些插件,如GC、MBeans等。满足您自己的需求。下篇博客讲解如何用JVM实现远程监控。
