【发布时间】:2019-08-12 03:10:53
【问题描述】:
我们正在监控 jvm 指标,如堆、元空间、线程和 gc 计数,我们能够将这些指标推送到监控服务器,如 prometheus。同样,我们想跟踪 Java 本机内存指标(jcmd VM.sumary 的输出)。 我的问题是,是否可以通过调用任何 jvm 运行时类来获取这些指标?
【问题讨论】:
-
在 Linux 上,监视来自的 RSS 非常容易 - 只需解析
/proc/[pid]/stat输出。要从应用程序中监控 JVM 本机内存使用情况,请解析/proc/self/stat。 -
感谢@apangin 的链接。我的整个想法是减少进程内存,但我想监控本机内存使用情况,以便我们了解大部分内存的去向。
-
@UdayShankar,如果您要解析 /proc/... 文件,也可以查看
/proc/</pid>/maps。但正如 Shipilev 所说 (shipilev.net/jvm/anatomy-quarks/12-native-memory-tracking):“这 [使用 JVM 的 NMT] 比试图通过解析来自例如 /proc/$pid/maps 的不透明内存映射来弄清楚 JVM 在做什么要容易得多”
标签: java jvm monitoring prometheus jcmd