【问题标题】:Saving VisualVM information as data将 VisualVM 信息保存为数据
【发布时间】:2015-12-07 15:13:12
【问题描述】:

使用 VisaulVM,我想在不应用图像处理算法的情况下将其作为数据获取……我该怎么做?我认为这不会来自快照。

我不确定 VisualVM 和 jVisualVM 有何不同,命名肯定令人困惑,但我正在运行 Oracle 提供的一个 (Version 1.7.0_80 (Build 150109))

谢谢!

【问题讨论】:

  • VisualVM 里面可能没有这样的选项吗?

标签: visualvm jvisualvm


【解决方案1】:

您可以将Tracer plugin 与各种探针一起使用。 Tracer 可以以 CSV、HTML 或 XML 格式导出数据。

【讨论】:

  • Mbeans也可以导出吗?我在我的 VisualVM 安装中看到了多个 Tracer 插件。选哪个?
【解决方案2】:

所有这些信息都可以通过JMX 获得。这就是 VisualVM 获取信息的方式,您也可以使用相同的技术来获取它。首先从工具菜单安装 VisualVM-MBeans 插件。这将添加另一个标题为 MBeans 的选项卡,您可以在其中查看应用程序的所有可用数据。您将在java.lang.Memoryjava.lang.OperationSystem 下找到图形数据。

如果您要检查自己进程的信息,只需调用ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage()ManagementFactory.getMemoryMXBean().getHeapMemoryUsage() 即可。还有更多,但这些应该可以帮助您入门。

要获得精确的 CPU 使用率,请参阅:Using OperatingSystemMXBean to get CPU usage

如果您想获取有关另一个进程的信息,则需要更多代码。 Accessing a remote MBean server 上有一个完整的答案,但基本上是:

// replace host and port
// not tested, might not work
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://<addr>:<port>");
JMXConnector jmxConnector = JMXConnectorFactory.connect(url);
MBeanServerConnection connection = jmxConnector.getMBeanServerConnection();
OperatingSystemMXBean bean = ManagementFactory.getPlatformMXBean(connection, OperatingSystemMXBean.class);
bean.getSystemLoadAverage();

您还必须按照How to activate JMX on my JVM for access with jconsole? 中的说明使用公开的 JMX 启动您的 Java 进程,但基本上:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9010
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

还有一种方法可以枚举本地机器上运行的 Java 进程,甚至连接到未启用 JMX 的进程(尽管您获得的数据较少)。如果这就是您要寻找的内容,VisualVM Source Code 将是一个不错的起点。

【讨论】:

  • 非常感谢您将所有内容整合在一起。我想有一个库来处理这方面的一些普通方面可能会很酷,比如高效的数据记录、在异常终止之前关闭而不是丢失文件,或者可能是我现在想不到的其他东西。
  • 关于最后一点,我已经同时询问了stackoverflow.com/questions/34137048/…..
【解决方案3】:

回答您关于命名的其他问题:

VisualVM 是托管在visualvm.java.net 的开源项目,Java VisualVM 是 VisualVM 的稳定版本,带有 Oracle 品牌和其他一些小改动。 Java VisualVM 在 JDK 中分发。有一个table,您可以在其中找到哪个 VisualVM 版本是各个 JDK 更新中 Java VisualVM 的基础。

【讨论】:

    猜你喜欢
    • 2012-02-14
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多