首页 > 代码库 > VisualVM监控JVM
VisualVM监控JVM
VisualVM远程监控JVM
内存溢出问题
方式一:jststd
[root@work]# java -versionjava version "1.7.0_79"Java(TM) SE Runtime Environment (build 1.7.0_79-b15)Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)[root@work]# cd /usr/java/jdk1.7.0_79/bin/[root@bin]# vim jstatd.all.policy 1 grant codebase "file:/usr/java/jdk1.7.0_79/lib/tools.jar" { 2 permission java.security.AllPermission; 3 };###以守护进程方式运行[root@bin]# ./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=IP &
遇到的问题:
Could not create remote object access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write") java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write") at java.security.AccessControlContext.checkPermission(AccessControlContext.java:366) at java.security.AccessController.checkPermission(AccessController.java:560) at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) at java.lang.System.setProperty(System.java:781) at sun.tools.jstatd.Jstatd.main(Jstatd.java:139)
原因:$JAVA_HOME即(/usr/java/jdk1.7.0_79/)填错
安全最好配置JAVA_HOME
方式2:
1. 修改远程机器JDK配置文件 (我这里远程机器是linux).
a.进入JAVA_HOME\jre\lib\management\目录
b.拷贝jmxremote.password.template这个文件到当前目录, 并改名为jmxremote.password
c.打开jmxremote.password文件,去掉 # monitorRole QED 和 # controlRole R&D 这两行前面的注释符号
2. 修改远程机器上需要被监控的程序的配置文件
a.进入JAVA_HOME\bin
b.打开catalina.sh文件,加入如下信息:
JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=IP
-Dcom.sun.management.jmxremote.port=18999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
c.重启Tomcat服务.
VisualVM下载地址:visual.java.net/download.html
VisualVM监控JVM