JConsole毕竟是JDK自带的东西,功能虽然没有一些商业软件那么强大,但是稳定性好,在大压力情况下也不会发生什么问题。而且,提供了相对全面的系统监控功能,还是值得一用的。
JConsole如何远程连接
Jar包
-Djava.rmi.server.hostname=10.160.13.111 #远程服务器ip,即本机ip
-Dcom.sun.management.jmxremote #允许JMX远程调用
-Dcom.sun.management.jmxremote.port=3214 #自定义jmx 端口号
-Dcom.sun.management.jmxremote.ssl=false # 是否需要ssl 安全连接方式
-Dcom.sun.management.jmxremote.authenticate=false #是否需要秘钥
spring boot项目
java -jar -Xms1024m -Xmx8192m -XX:PermSize=256M -XX:MaxPermSize=1024m -Dfile.encoding=utf-8 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.rmi.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false app-1.0.jar
tomcat项目
linux下修改catalina.sh文件
JAVA_OPTS="-server -Xms1024m -Xmx8192m -XX:PermSize=256M -XX:MaxPermSize=1024m -Dfile.encoding=utf-8 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.rmi.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
windows下修改catalina.bat文件
set JAVA_OPTS=-server -Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.rmi.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
在终端输入jconsole,会弹出可视化界面,选择远程连接,输入ip加端口
例如:192.168.8.11:8999
jvm的大致情况,包括:堆内存使用情况,加载的类的情况,线程个数等等信息。如下图所示:
**jvm主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所有方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。在jconsole中,我们看到下方绿色的柱状图表示的各个部分的内存情况。在jconsole中jvm的堆内存分为:eden space 内存池,survivor space 内存池,tenured gen内存池,非堆内存分为:code cache内存池,perm gen内存池。
如下图所示:**
jconsole查看一下jvm的参数设置,如下图: