温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何监控java内存使用

发布时间:2026-09-19 04:20:15 来源:亿速云 阅读:106 作者:小樊 栏目:编程语言

监控 Java 内存使用可以从运行时工具、命令行工具、可视化工具、代码级监控、生产环境方案几个层面来做。下面按实用程度给你一个系统性的总结。


一、JDK 自带命令行工具(最常用)

1. jps

查看 Java 进程

jps -l

2. jstat(重点)

查看堆内存、GC 情况

jstat -gc <pid> 1000

常见参数:

  • -gc:堆各区域使用情况
  • -gcutil:使用率百分比
  • -gccause:GC 原因

示例:

jstat -gcutil 12345 1000

二、可视化工具(推荐)

1. jconsole

jconsole

可看:

  • 堆 / 非堆内存
  • 线程
  • GC
  • MBean

2. jvisualvm

jvisualvm

功能更强:

  • 内存快照
  • CPU & 内存采样
  • 插件支持(如 Visual GC)

JDK 9+ 需单独下载


三、堆转储分析(排查内存泄漏)

1. 生成堆转储

jmap -dump:live,format=b,file=heap.hprof <pid>

或用参数自动生成:

-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/path/heap.hprof

2. 分析工具

  • Eclipse MAT
  • VisualVM
  • YourKit
  • JProfiler

四、代码中监控(程序内)

1. 使用 Runtime

Runtime runtime = Runtime.getRuntime();
long max = runtime.maxMemory();
long total = runtime.totalMemory();
long free = runtime.freeMemory();

2. 使用 JMX

ManagementFactory.getMemoryMXBean();
ManagementFactory.getMemoryPoolMXBeans();

适合:

  • 自定义监控
  • 上报到 Prometheus

五、生产环境推荐方案

1. JVM 参数

-Xms512m -Xmx512m
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Xloggc:gc.log

2. 监控体系

  • Prometheus + JMX Exporter
  • Grafana 面板
  • 告警:内存使用率 > 80%

3. APM 工具

  • Arthas(线上诊断神器)
  • SkyWalking
  • Pinpoint

六、常见监控指标

重点关注:

  • Heap 使用率
  • Old Gen 增长趋势
  • Full GC 频率
  • 对象创建速率
  • 内存不释放(疑似泄漏)

七、快速选择建议

场景 推荐
本地调试 VisualVM
线上快速看 jstat / Arthas
内存泄漏 heap dump + MAT
长期监控 Prometheus + Grafana

如果你愿意,可以告诉我:

  • 是 本地 / 测试 / 生产
  • 用的 JDK 版本
  • 是否允许加 Agent

我可以给你一套可直接用的监控配置。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手