我可以在方法入口处暂停 Java 运行时,以便有时间通过​​调试器或分析器进行附加吗?

Can I suspend Java runtime on method entry to have time to attach by debugger or profiler?

有没有办法在执行遇到某个方法时挂起 Java 进程的所有业务逻辑执行线程?

如果无法通过外部配置实现,是否有任何方法调用可以嵌入到应用程序中以达到预期的效果?

一个解决方案是将此代码放在您要调试的方法之前: System.out.println("Press Any Key To Continue..."); new java.util.Scanner(System.in).nextLine(); 这会一直等到您按下回车键,这样您就有时间附加调试器了。

另一种方法是使用 IDE Netbeans,它包含一个调试器并允许您在任何地方设置断点。

根据how to profile application startup with visualvm我可以用

开始申请
-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y

在应用程序启动时停止执行。

也许可以设置断点并移动到有趣的应用程序状态,然后附加分析器并再次启动应用程序。

另一种选择是从 Java 代理开始:https://visualvm.github.io/startupprofiler.html