jvm性能分析
jprofile工具,参考 https://www.cnblogs.com/jpfss/p/8488111.html
以下是jdk自带工具(jstat,jvisualvm,jps, jstack, jmap, jconsole)的探讨:
java环境 :jdk 1.8(基于ubantu)
【jstat】
参考 https://www.jianshu.com/p/845924a1b8f2,https://www.cnblogs.com/sxdcgaq8080/p/11089841.html
1 | jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]] |
获取某个进程pid后,查看对应信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | jstat -options -class 显示ClassLoad的相关信息; -compiler 显示JIT编译的相关信息; -gc 显示和gc相关的堆信息; -gccapacity 显示各个代的容量以及使用情况; -gcmetacapacity 显示metaspace的大小 -gcnew 显示新生代信息; -gcnewcapacity 显示新生代大小和使用情况; -gcold 显示老年代和永久代的信息; -gcoldcapacity 显示老年代的大小; -gcutil 显示垃圾收集信息; -gccause 显示垃圾回收的相关信息(通-gcutil),同时显示最后一次或当前正在发生的垃圾回收的诱因; -printcompilation 输出JIT编译的方法信息 |
若报错,请查看https://www.cnblogs.com/huangyuanni/p/16146150.html
【jvisualvm】
1.打开windows的JAVA_HOME/bin/jvisualvm.exe工具,添加远程jmx连接
2.在运行java application的机器上,配置jvm启动参数
以下参考 https://www.jianshu.com/p/81dd1f3311e5
1 2 3 4 5 | -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8777 -Dcom.sun.management.jmxremote.rmi.port=8777 -Dcom.sun.management.jmxremote.authenticate= false -Dcom.sun.management.jmxremote.ssl= false |
我这边是docker运行tomcat+war包的形式,故在bin/catalina.sh加入JAVA_OPTS即可
1 | JAVA_OPTS= "-Xms512m -Xmx1024m -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8777 -Dcom.sun.management.jmxremote.rmi.port=8777 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false" |
3.现在可以开始监测啦
刚好用jmeter做了下压测(3000线程循环),查看jmx监控情况
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下