jconsole使用背景:
web项目使用 tomcat服务部署,当tomcat启动后会占用java内存(tomcat为java代码所写,运行时需要JRE,需要安装JDK得到这个环境),使用jconsole可以监控tomcat占用java内存情况。
1.首先需要备份catalina.sh文件,防止修改catalina.sh文件后tomcat运行出问题。
linux环境下找到tomcat中的/bin/catalina.sh文件,找到:
在这个位置增加java相关配置,增加内容如下:
JAVA_OPTS="-server -XX:PermSize=512M -XX:MaxPermSize=1024M -XX:+UseG1GC -Xss10M -Xms4096M -Xmx8192M "
JAVA_OPTS="$JAVA_OPTS -server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=//heapdump -Dcom.sun.management.jmxremote.port=9005 -Dcom.sun.management.jmxremote.rmi.port=9005 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.2.173"
增加后的文件如下图:
2.进入jdk目录打开jconsole,窗口:
输入ip:port,然后点击连接及可。
3.导出堆内存。
cd到jdk的bin目录下,导出堆内存:
jmap -dump:format=b,file=****.dump 4562(java的PID进程号)