Java服务器中可通过jstat、jinfo、jstack及JMX/HTTP端点查看JVM信息:jstat实时监控GC与内存,jinfo查看并动态修改启动参数,jstack分析线程与锁,JMX或Actuator提供结构化指标用于监控告警。

在Java服务器环境中,查看JVM信息是排查性能问题、调优内存配置和确认运行时环境的关键步骤。最直接有效的方式是通过JDK自带工具结合运行时参数和系统命令来获取真实、准确的JVM状态。
使用jstat实时监控JVM运行时统计
jstat 是JDK提供的轻量级命令行工具,无需侵入应用即可查看GC频率、堆内存使用、类加载等核心指标。适用于生产环境快速诊断。
- 查看指定进程的GC概览(每2秒刷新一次):jstat -gc
2000 - 查看元空间使用情况:jstat -gcmetacapacity
- 查看JIT编译方法统计:jstat -compiler
注意:需确保执行用户有权限访问目标Java进程;若进程以非root用户启动,建议用同一用户执行jstat。
通过jinfo查看JVM启动参数与系统属性
jinfo 可读取正在运行的JVM的启动参数(如-Xmx、-XX:+UseG1GC)、系统属性(如java.version、user.home)及可动态调整的VM选项。
立即学习“Java免费学习笔记(深入)”;
- 列出所有JVM启动参数:jinfo -flags
- 查看系统属性:jinfo -sysprops
- 动态修改部分可写参数(如MaxMetaspaceSize):jinfo -flag +PrintGCDetails
该命令对排查“为何没生效-Xms设置”或确认是否启用了特定GC日志选项非常实用。
请注意以下说明:1、本程序允许任何人免费使用。2、本程序采用PHP+MYSQL架构编写。并且经过ZEND加密,所以运行环境需要有ZEND引擎支持。3、需要售后服务的,请与本作者联系,联系方式见下方。4、本程序还可以与您的网站想整合,可以实现用户在线服务功能,可以让客户管理自己的信息,可以查询自己的订单状况。以及返点信息等相关客户利益的信息。这个功能可提高客户的向心度。安装方法:1、解压本系统,放在
利用jstack分析线程状态与锁信息
jstack 用于生成Java线程快照(thread dump),是定位死锁、线程阻塞、CPU高占用等问题的必备手段。
- 输出全部线程栈信息到文件:jstack
> thread_dump.txt - 检测是否存在死锁:jstack -l
| grep -A 10 "deadlock" - 配合top定位高CPU线程后,用十六进制线程ID查具体栈:jstack
| grep "0x " -A 10
建议定期采集多个间隔的thread dump做对比,观察线程状态变化趋势。
通过JMX或HTTP端点获取结构化JVM指标
若应用已启用JMX远程访问(-Dcom.sun.management.jmxremote)或集成了Actuator(Spring Boot)、Prometheus Exporter等组件,可通过标准协议获取JSON/HTTP格式的JVM数据。
- Spring Boot Actuator默认暴露:/actuator/metrics/jvm.memory.used、/actuator/env
- JConsole或VisualVM连接本地/远程JMX地址,图形化查看内存、线程、类、GC等实时图表
- 通过JMX API编程获取:
ManagementFactory.getRuntimeMXBean().getUptime()或MemoryUsage usage = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();
这种方式适合集成到监控平台,实现长期趋势分析与告警联动。









