我有一个基于 NetBeans RCP 的应用程序,它显然只在某些 PC 上,而且只是有时,在打开新的 TopComponent 后会自行冻结。老实说,我从未看过 JVM 线程转储,但我真的不知道会发生什么。不幸的是,我无法判断线程转储文件是否完整,因为 jstack 在尝试生成转储时会产生以下异常:
Attaching to core c:\bas.txt from executable 8836, please wait...
Error attaching to core file: Windbg Error: OpenDumpFile failed!
sun.jvm.hotspot.debugger.DebuggerException: Windbg Error: OpenDumpFile failed!
at sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal.attach0(Native Method)
at sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal.attach(WindbgDebuggerLocal.java:160)
at sun.jvm.hotspot.HotSpotAgent.attachDebugger(HotSpotAgent.java:673)
at sun.jvm.hotspot.HotSpotAgent.setupDebuggerWin32(HotSpotAgent.java:569)
at sun.jvm.hotspot.HotSpotAgent.setupDebugger(HotSpotAgent.java:335)
at sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:304)
at sun.jvm.hotspot.HotSpotAgent.attach(HotSpotAgent.java:156)
at sun.jvm.hotspot.tools.Tool.start(Tool.java:191)
at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
at sun.jvm.hotspot.tools.JStack.main(JStack.java:92)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at sun.tools.jstack.JStack.runJStackTool(JStack.java:140)
at sun.tools.jstack.JStack.main(JStack.java:106)
所以我设法用控制台窗口启动了我的 RCP 应用程序,并在它挂起时按下了 CTRL+break。如前所述,我无法确定它是否完整,因为控制台窗口可能有更多从缓冲区中删除的行。
无论如何,这是转储文件的链接(我手动添加了第一行以便在 Thread Dump Analyzer 中打开它):
有人可以帮助我理解这一点吗?
谢谢