VisualVM是一个集成多个JDK命令行工具的可视化工具。可以作为Java应用程序性能分析和运行监控的工具。开发人员可以利用它来监控、分 析线程信息,浏览内存堆数据。系统管理员可以利用它来监测、控制Java应用程序横跨整个网络的情况。Java应用程序使用人员可以利用它来创建包含所有 必要信息的Bug 报告。
VisualVM 提供在 Java 虚拟机 (Java Virutal Machine, JVM) 上运行的 Java 应用程序的详细信息。在 VisualVM 的图形用户界面中,可以方便、快捷地查看多个 Java 应用程序的相关信息。
下载工具
官方下载地址:http://visualvm.java.net/download.html
安装插件
通过安装 VisualVM 更新中心提供的插件,可以向 VisualVM 添加功能。
- 从主菜单中选择“工具”>“插件”。
- 在“可用插件”标签中,选中该插件的“安装”复选框。单击“安装”。
- 逐步完成插件安装程序。
VisualVM监视远程JVM
通过jstatd启动RMI服务
配置java安全访问,将如下的代码存为文件 jstatd.all.policy,放到JAVA_HOME/bin中,其内容如下:
grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; };
想要调用这个监控策略,请拷贝一下脚本并执行:
jstatd -J-Djava.security.policy=jstatd.all.policy
由于 jstatd 需要保持一直运行,所以建议使用如下命令执行 jstatd 程序,命令如下(linux系统下有效,windows没确认过):
add by 2013年12月3日 验证windows环境也能行!
jstatd -J-Djava.security.policy=jstatd.all.policy &
如果需要RMI 日志功能的话,还可以在启动参数中加入 -J-Djava.rmi.server.logCalls=true:
jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.logCalls=true &
通过JMX管理远程应用
配置tomcat启动参数$JAVA_OPTS,指定hostname 一般情况需要重新指定hostname,否则连接不成功
-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx
指定hostname 指定端口默认:1099
-Dcom.sun.management.jmxremote.port=8899
禁止ssl连接
-Dcom.sun.management.jmxremote.ssl=false
开启用户认证
-Dcom.sun.management.jmxremote.authenticate=true
认证用户名密码
-Dcom.sun.management.jmxremote.password.file=$JAVA_HOME/jre/lib/management/jmxremote.password
访问模式
-Dcom.sun.management.jmxremote.access.file=$JAVA_HOME/jre/lib/management/jmxremote.access
注意:jmxremote.password和jmxremote.access文件只允许启动用户名对该文件拥有读写权限
我们所要启动的服务将用weblgoic账户启用,权限设置信息如下:
修改jmxremote.password文件内容,设置信息如下:
monitorRole QED
controlRole R&D
其中monitorRole为账户,QED为密码。
好叻,这嘛嘛再也不用担心我不会分析Java内存信息了。