java - jstatd/visualgc 的控制台客户端

标签 java visualvm jstatd

VisualVM/VisualGC 实时提供了很多有用的 GC 相关指标,但我想要一个命令行工具,可以通过 jstatd 连接到远程应用程序,并以 CSV 或 XML 记录,理想情况下与以下指标完全相同VisualGC 提供。自己写应该不成问题,但乍一看我找不到 VisualVM/jstatd 使用的协议(protocol)。

据我了解 VisualGC 不是开源的:https://stackoverflow.com/questions/11096466/where-is-the-source-code-repository-for-visualgc ,但是有其他开源工具吗?关于所使用的协议(protocol)有什么线索吗?

我设法通过 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 的一个非常低级的接口(interface)。

我已经从https://svn.java.net/svn/visualvm~svn/trunk查看了VisualVM源代码 刚刚开始查看 5mb 代码库,但它既不使用 RemoteHost 也不使用 RemoteVm RMI 类。

谢谢。

最佳答案

首先,我查看了 VisualVM 的源代码(~5mb),创建了一个命令行工具,在 JvmstatModelFactory 上注册 JvmstatModelProvider,获取应用程序,创建 JvmJvmstatModel 并提取所有 MonitoredValues - 它通过 jstatd 连接到远程应用程序并打印更改格式 timeMillis,name,value 中的值 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/

相关文章:

java - easymock - 匹配器和多次调用

java - 如何对包装为 .exe 的 Java 应用程序运行分析?

vmware - Jstatd 连接问题

java - 为什么我使用 jpanel 在不同的计算机上得到不同的结果?

java - 如何使用特定的 RGB 设置形状中的像素?

java - 将字符串中的文本替换为异常

.net - 监控 .NET 线程

ubuntu-18.04 - VisualVM 无​​法启动

java - 了解幸存世代指标