【发布时间】:2015-03-10 19:35:23
【问题描述】:
我无法在服务器上运行任何基于 GUI 的分析器(例如 jvisualvm)来监控正在运行的 Java 进程的堆。根据this answer,我可以使用jstat -gc <pid>查看OU和OC列,了解堆使用情况和分配情况。
但我只是在另一台服务器上比较了 jvisualvm 和 jstat,它们显示的堆使用和分配数字并不相同。
Jvisualvm 显示一个 Java 进程有大约 1GB 分配给堆,其中大约 500MB 被使用:
但是对于同一个进程,jstat 在 OC 列下仅显示约 700MB,在 OU 列下仅显示约 226MB:
# jstat -gc 39621
S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT
16384.0 17920.0 3984.0 0.0 322560.0 10320.4 699392.0 226295.2 83968.0 47921.1 11966 66.103 12 3.083 69.186
为什么 jvisualvm 和 jstat 显示不同的堆使用和分配数字?
【问题讨论】:
标签: java profiling heap-memory