我想从 SO 社区获取关于这个问题的想法。
问题是这样的:
我们有一位位于世界另一端的用户通过 WebStart 启动我们的应用程序。然而,用户提示她的整个应用程序卡住并变得无响应。通常,客户端会对分布式数据库进行大量数据库查询。
问题:
- 如果我们要求她对她的应用程序执行 CTRL-Break,JVM 会将堆栈跟踪写入何处?
- 仅使用 JConsole 就足够了吗?
- 在客户端上实现 JMX beans 会不会太过分?它真的有助于解决生产中的问题吗?
目前用户正在 JRE 1.5.0-b08 上运行,但我们计划在几个月内迁移到 JRE 6。
你觉得怎么样?
最佳答案
José,您可以通过多种方式从 JVM 获取大量信息。
最好的办法可能是在远程 JVM 中启用调试。您可以使用描述符 XML 中的 j2se
元素来设置它们,如 here 所示。 。既然你可以设置 -Xdebug
你就有了一个好的开始;我从未尝试过在网络启动应用程序上进行远程调试,因此设置远程部分可能有点问题。
您还可以通过添加单独的线程来远程与您交谈并发送调试消息来自行设置一些内容。
您可以使用 native java或log4j remote logger .
如果它按照您描述的方式挂起,那么发生的情况很可能是某种网络挂起。您可以在对话的您端进行一些跟踪/调试吗?
关于java - 如何从 web start 下运行的客户端获取 Java 堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/726812/