监控 Java 内存使用可以从运行时工具、命令行工具、可视化工具、代码级监控、生产环境方案几个层面来做。下面按实用程度给你一个系统性的总结。
jps查看 Java 进程
jps -l
jstat(重点)查看堆内存、GC 情况
jstat -gc <pid> 1000
常见参数:
-gc:堆各区域使用情况-gcutil:使用率百分比-gccause:GC 原因示例:
jstat -gcutil 12345 1000
jconsolejconsole
可看:
jvisualvmjvisualvm
功能更强:
JDK 9+ 需单独下载
jmap -dump:live,format=b,file=heap.hprof <pid>
或用参数自动生成:
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/path/heap.hprof
RuntimeRuntime runtime = Runtime.getRuntime();
long max = runtime.maxMemory();
long total = runtime.totalMemory();
long free = runtime.freeMemory();
ManagementFactory.getMemoryMXBean();
ManagementFactory.getMemoryPoolMXBeans();
适合:
-Xms512m -Xmx512m
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Xloggc:gc.log
重点关注:
| 场景 | 推荐 |
|---|---|
| 本地调试 | VisualVM |
| 线上快速看 | jstat / Arthas |
| 内存泄漏 | heap dump + MAT |
| 长期监控 | Prometheus + Grafana |
如果你愿意,可以告诉我:
我可以给你一套可直接用的监控配置。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。