【问题标题】:Method level profiling of newly launched JVM新启动 JVM 的方法级别分析
【发布时间】:2014-01-19 03:12:20
【问题描述】:

在我的应用程序中,每当创建新资源时就会启动一个新的 JVM。我可以通过在 yourkit 中连接新启动的 JVM 来分析它。

现在我只能在 JVM 准备好之后才能连接到它,之后我可以对其进行分析,但我想在即将到来时分析 JVM 方法,即分析 JVM 的方法调用,而它正在正在初始化。

有什么方法可以实现吗?

原因是,一些在初始化期间调用的方法会导致一些问题,一旦 JVM 创建并准备就绪,就无法对其进行分析。

谢谢

【问题讨论】:

标签: java jvm profiling yourkit


【解决方案1】:

如果在“JVM 方法”下您指的是在 JVM 初始化时调用的 Java 方法,那么您可以使用 yourkit 来执行此操作。你必须:

之后,您应该会在连接后在 YourKit UI 中看到“早期”调用。

【讨论】:

    【解决方案2】:

    您想对在应用启动的最初几秒钟内运行的代码进行远程调试会话。

    尝试执行此操作时可能会遇到的一个问题是,由于代码一开始就运行,JVM 可能会在您有机会通过 Eclipse 附加调试器并设置断点之前匆忙通过它。

    解决方案是设置您的 JVM/调试配置,使其在启动时设置为挂起。

    设置远程调试的典型方法是在用于启动应用程序的代码中使用以下 JVM 参数,以便调试器稍后可以将自身附加到端口 8000。

    -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

    事实上,当您在调试模式而不是正常模式下启动应用程序时,Eclipse 就是这样做的。它在启动应用程序时使用的 JVM 参数中添加了这一行。

    注意suspend=n。如果设置为 y,JVM 将在启动时挂起。它将等待调试器附加到它并在继续之前释放它。

    所以使用挂起标志,我们的问题就解决了。

    来源: http://www.onkarjoshi.com/blog/224/how-to-suspend-vm-on-startup-when-remote-debugging-your-java-app/

    【讨论】:

    • 链接消失后,仅链接的答案可能没有价值。请将相关内容放入您的回答中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    相关资源
    最近更新 更多