【发布时间】:2014-08-27 08:51:21
【问题描述】:
我正在寻找一种从 Linux 上的 Java 进程中提取堆大小(最小、最大、已使用)的方法。我需要一个轻量级工具/命令来完成这项工作。大型监控包不是一种选择。
我进行了一些谷歌搜索,但找不到可行的替代方案。到目前为止,我发现的唯一可能的选择是使用 JMX 协议。我在 Java 应用程序上启用了 JMX,并使用各种使用 JMX 协议/库实现的 Java 工具成功轮询它。但是这些 Java 工具速度很慢,在启动过程中分配内存时会占用大量 cpu。我想要的是一个简单的工具命令行,例如 JMX 协议和轮询进程的堆大小。
我使用的是 IBM 的 J9 版本的 Java,jstat 工具在那里不可用。
有什么想法吗?
【问题讨论】:
-
你可以试试 JProfiler 一个堆分析工具。或者 JVisualVm 与 jdk 一起用于此目的。
-
自己轮询 JMX 大约需要 15 行代码。
-
nablex 我在哪里可以找到这 15 行代码。 JMX 是一种非 http 协议,无法轻松与之对话。你的意思是 15 行 Java 代码吗?我已经有一个 Java 客户端,但是如果我几乎同时在十分之一的服务器上运行它,它会很慢并且占用 CPU。你能详细说明一下吗?
标签: java size heap-memory monitoring