JDK故障处理工具箱
1、jps(JVM Process Status Tool)--显示所有HotSpot虚拟机进程
举例:
jps -q (只查询虚拟机进程ID)
jps -m (启动时传递main()的参数)
jps -l(输出类全名,或者jar路径)
jps -v(输出虚拟机进程启动参数)
2、jstat(JVM Statistics MOnitoring Toll)--收集虚拟机运行数据
举例:
1)每秒查询1次进程21888垃圾收集情况,一共查询20次
jstat -gc 21888 1000 20
jstat -gccapacity 21888 1000 20 (最大最小空间)
jstat -gcutil 21888 1000 20 (占的百分比)
jstat -gccause 21888 1000 20 (额外输出导致上一次CG产生的原因)
2)被JIT编译过的方法
jstat -printcompilation 21888 1000 20
3、jinfo(Configuration Info for java)--显示虚拟机配置
举例:
1)查看CMSInitiatingOccupancyFraction的参数值
jinfo -flag CMSInitiatingOccupancyFraction 21888 (1.6以上java -XX:PrintFlagsFinal)
2)查询虚拟机进程系统属性
jinfo -sysprops 21888
4、jmap(Memory Map for Java)--生成虚拟机内存快照
举例:
1)导出虚拟机进程的dump文件(MemoryAnalyzer,jhat查看)
jmap -dump:live,format=b,file=d:/jvm.bin 21888
2)打印进程堆信息
jmap -heap 21888
3)显示堆中的对象的统计的前10条
jmap -histo 21888 | head 10
5、jhat(Java Heap Dump Browser)--分析heapdump文件
举例:
1)查看dump文件
jhat d:\jvm.bin(在浏览器查看,默认端口7000)
6、jstack (Stack Trace for Java)--显示虚拟机线程快照,因为该命令是jdk自带的,有些进程无法打印,需要加-F参数强制打印。
1)显示关于锁的附加信息
jstack -l pid
2)显示本地方法C/C++的堆栈
jstack -m pid| grep 'pid十六进制位' -C5 --color2, 也可以使用kill -3 pid打印日志
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?