VisualVM / VisualGC实时提供了大量有用的与GC相关的指标,但是我需要一个命令行工具,它可以通过jstatd连接到远程应用程序,并以CSV或XML格式记录,理想情况下与VisualGC提供的指标完全相同。编写自己的书应该不是问题,但是从第一眼看,我无法找到visualvm / jstatd使用的协议。

据我了解,VisualGC不是开源的:https://stackoverflow.com/questions/11096466/where-is-the-source-code-repository-for-visualgc,但是还有其他替代开源工具吗?有什么线索可以使用该协议吗?

我设法通过RMI连接到jstatd(默认端口1099,JStatRemoteHost是rmi名称),可以连接到特定的VM-但http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/jvmstat/monitor/remote/RemoteVm.java#RemoteVm却是jstatd的非常低级的接口。

我已经从https://svn.java.net/svn/visualvm~svn/trunk签出了VisualVM源代码
并开始研究5mb代码库,但是它既没有使用RemoteHost也没有使用RemoteVm RMI类。

谢谢。

最佳答案

首先,我查看了VisualVM的源代码(〜5mb),创建了一个命令行工具,在JvmstatModelFactory上注册JvmstatModelProvider,获取了一个Application,创建了JvmJvmstatModel并提取了所有MonitoredValues-它通过jstatd连接到远程应用程序并在其中打印更改的值。格式timeMillis,名称,值
1369270235646,sun.gc.generation.2.space.0.capacity,16777216
1369270236666,sun.os.hrt.ticks,2511500491
1369270237581,sun.gc.generation.0.space.0.used,641408
1369270237582,sun.os.hrt.ticks,2512502544

一个小时后,我找到了适用于我的任务https://code.google.com/p/hatter-source-code/wiki/hotstat的正确命令行工具,它不使用jstatd-但很好,我仍然可以通过ssh远程运行它。

关于java - jstatd/visualgc的控制台客户端,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16701283/

10-11 05:00