企业级应用开发中经常会遇到以下问题,可以使用工具对JVM进行监管,以便及时查找问题所在。
内存不足OutOfMemory(大对象没有gc等),内存泄露;
线程死锁,线程数过多;
锁争用(Lock Contention),资源未及时释放(数据库);
Java进程CPU消耗过高.
一、Java自带工具
Java安装目录的bin文件加下有一些工具可以用来监控JVM性能,如jconsole、jvisualvm、jmap、jps、jstack、jhat、jstat等。
1. jconsole
jconsole可以监控Java应用程序(如jar应用、tomcat等),但被监视的应用程序必须和jconsole是用同一个用户运行的。jvisualvm的使用和jconsole类似。
- 本地监控: jconsole pid
- 远程监控: jconsole [ hostname:portNum ]
使用远程监控需要配置jmx代理信息,修改Tomcat的bin目录下的catalina.bat。
set JAVA_OPTS= %JAVA_OPTS% -Djava.rmi.server.hostname=HostIP
set JAVA_OPTS= %JAVA_OPTS% -Dcom.sun.management.jmxremote.port=8888
set JAVA_OPTS= %JAVA_OPTS% -Dcom.sun.management.jmxremote.ssl=false
set JAVA_OPTS