JVM监控
JVM监控
一、内存使用情况
- 堆内存:Eden区、Survivor区、Old区使用情况
- 非堆内存:Metaspace(元空间)、Code Cache、Compressed Class Space
- 直接内存(Direct Buffer)
- 内存池详情:各区域的大小、使用量、峰值
- GC情况:Young GC、Full GC频率、耗时
二、线程信息
- 线程数量:当前活动线程数、峰值线程数
- 线程状态:RUNNABLE、BLOCKED、WAITING、TIMED_WAITING等
- 线程堆栈:死锁检测、热点方法分析
- 守护线程与非守护线程统计
三、垃圾回收(GC)
- GC次数:Minor GC、Major GC/Full GC次数
- GC耗时:各次GC暂停时间、总GC时间占比
- GC原因:分配失败、System.gc()调用等
- 回收效率:各代内存回收效果
四、类加载信息
- 已加载类数量
- 已卸载类数量
- 类加载器:各加载器加载的类数量
- 编译信息:JIT编译的方法数、耗时
五、运行时信息
- JVM版本、启动参数、运行时间
- CPU使用率:进程CPU占用、系统CPU负载
- 系统负载:系统平均负载
六、性能指标
- CPU时间:用户态、内核态CPU时间
- 文件描述符:打开的文件描述符数量
- 网络连接:TCP连接数
- 锁竞争:监视器锁竞争情况
常用监控工具
- 命令行工具:jstat、jmap、jstack、jcmd
- 可视化工具:JConsole、VisualVM、JMC(Java Mission Control)
- APM工具:Arthas、Prometheus + Grafana、SkyWalking、Pinpoint
- JDK内置:JMX(Java Management Extensions)
监控建议
- 生产环境建议使用时序数据库(如Prometheus)进行指标收集
- 设置合理的告警阈值(如GC时间过长、内存使用率过高等)
- 结合业务日志和APM工具进行全链路监控
这些监控信息可以帮助开发者及时发现内存泄漏、线程死锁、GC过度等问题,保障应用稳定运行。
浙公网安备 33010602011771号