0

我想为网站编写一个管理工具。我想在图表中显示网站的内存使用情况和 CPU 使用情况。我在某处读到 JVM 将这些数据写入 MAT 工具用来显示结果的转储文件中。所以我的问题是 JVM 将这个文件转储到哪里以及以什么速率转储。

因为我想在图表上显示过去 24 小时的使用情况。那么我们如何捕获这些数据。

寻求帮助

4

2 回答 2

1

目前 JVM 中没有任何东西可以生成您想要的数据流。您可以将 JVisualVM 之类的分析器连接到您的应用程序,但这也可能会大大减慢它的速度(也就是说,对于内存分析来说,它还不错......取决于您的应用程序的非功能性要求)。

还有两个选择:

使用 MBean 编写自己的代码

在 ScheduledExecutorService 中,运行一个通过MBean 接口询问 JVM 的周期性进程。您可以生成可以在 MAT 中查看的堆转储。

使用 cron 和 jmap

您还可以使用jmap生成堆转储并在操作系统级别安排它以每隔一段时间运行一次。如果您不想或不能更改代码,这可能会更好。

于 2012-10-03T13:16:20.053 回答
0

AFAIK,如果你想要历史数据,你必须自己记录。当您使用 VisualVM 进行连接时,您总是从您连接的点开始。

MAT 工具可用于检查堆转储。它仅适用于内存快照,使用恕我直言很痛苦。

于 2012-10-03T11:40:30.890 回答