在我的应用程序中,在创建新资源时会启动新的JVM。我可以通过在yourkit中连接它来分析新启动的JVM。
现在我只能在准备就绪之后才能连接到JVM,之后我能够对它进行概要分析但我想在即将发布的时候对JVM方法进行概要分析,即在JVM的方法调用时进行概要分析。初始化。
有什么方法可以达到这个目的吗?
原因是,在初始化期间调用仅的某些方法会导致一些问题,并且在创建JVM并准备就绪后无法对其进行分析。
由于
答案 0 :(得分:1)
如果在“JVM方法”下你的意思是在JVM初始化时调用的Java方法,那么你可以使用yourkit来实现它。你必须:
从开始http://www.yourkit.com/docs/java/help/agent.jsp开始使用YourKit代理运行JVM
从开始http://www.yourkit.com/docs/java/help/startup_options.jsp开始进行CPU分析(“跟踪”和“采样”选项)
之后,您应该在连接后在YourKit UI中看到“早期”调用。
答案 1 :(得分:0)
您希望对启动应用程序的最初几秒内运行的代码执行远程调试会话。
尝试执行此操作时可能遇到的一个问题是,由于代码在开始时运行,因此在您有机会通过Eclipse附加调试器并设置断点之前,JVM可能会超过它。
解决方案是设置JVM /调试配置,以便将其设置为在启动时挂起。
设置远程调试的典型方法是在用于启动应用程序的代码中使用以下JVM参数,以便稍后调试器可以将自身附加到端口8000。
-Xrunjdwp:运输= dt_socket,服务器= Y,暂停= n时,地址= 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/