【问题标题】:How do I get multiple hprof dumps in a Java WebStart (JNLP) application?如何在 Java WebStart (JNLP) 应用程序中获取多个 hprof 转储?
【发布时间】:2009-08-12 20:52:52
【问题描述】:

使用 Java 控制台应用程序,我可以这样做:

java -agentlib:hprof=heap=dump,format=b MyClass

然后我可以在任何时候按 ctrl-\(或 Windows 上的 ctrl-break)对堆进行快照以供以后分析。

我想为 Java Web Start 应用程序做同样的事情,但我似乎无法让它工作。我可以使用 JAVAWS_VM_ARGS 环境变量传入 agentlib 参数,但是在控制台中输入 ctrl-\ 和 ctrl-break 似乎没有任何作用。我得到的只是一个转储,当程序启动时,这并不是很有趣,因为那时我什至还没有登录我们的程序并执行我想要分析的事务。

【问题讨论】:

    标签: java profiling hprof


    【解决方案1】:

    使用以下 JMV 参数启动您的应用程序以启用 JMX 并在端口 9004 上启动侦听器:

    -Dcom.sun.management.jmxremote
    -Dcom.sun.management.jmxremote.port="9004"
    -Dcom.sun.management.jmxremote.authenticate="false"
    -Dcom.sun.management.jmxremote.ssl="false"
    

    然后看看这个 Java 程序,它可以连接到 JMX 服务器并按需进行堆转储。源代码包括 cmets 以及 Internet 上 2 篇有用文章的链接,这些文章帮助我完成了所有这些工作。祝你好运!

    链接:JmxHeapDumper.java

    附:显然让 JMX 为 WebStart 应用程序启动很棘手,我发现了这个讨论,希望它有所帮助:http://forums.java.net/jive/message.jspa?messageID=311717

    【讨论】:

      【解决方案2】:

      您可以使用VisualVM 从正在运行的应用程序中获取堆转储。 VisualVM 允许您浏览和保存堆转储。

      【讨论】:

      • 不幸的是,当我尝试使用 VisualVM 分析其内存时,我们的 Java Web Start 应用程序似乎崩溃了。
      猜你喜欢
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2015-01-19
      • 2014-12-24
      • 2011-06-07
      • 2011-11-16
      • 1970-01-01
      相关资源
      最近更新 更多