首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助调查NetBeans RCP应用程序冻结中的线程转储

需要帮助调查NetBeans RCP应用程序冻结中的线程转储
EN

Stack Overflow用户
提问于 2016-05-07 01:11:32
回答 1查看 447关注 0票数 0

我有一个基于NetBeans RCP的应用程序,显然只在一些PC上,只有有时,只是冻结后,打开一个新的TopComponent。老实说,我从来没有看过JVM线程转储,但我真的不知道可能会发生什么。不幸的是,我不知道线程转储文件是否完整,因为jstack在尝试生成转储时会产生以下异常:

代码语言:javascript
复制
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。如上所述,我不能确定它是否完整,因为控制台窗口可能有更多从缓冲区中删除的行。

无论如何,这是指向转储文件的链接(我手动添加了第一行,以便在线程转储分析器中打开它):

http://pastebin.com/1M5T85i5

有人能帮我理解一下吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-07-16 03:27:09

这听起来像是死结。诊断死锁的最简单方法是使用JConsole (包含在JDK中)连接到Java程序,并使用检测死锁功能。

  1. 运行挂起的进程并单击连接
  2. 如果收到有关安全连接的警告,只需单击不安全按钮。
  3. 选择线程选项卡,然后单击检测死锁
  4. 如果存在死锁,图形用户界面将突出显示参与的线程。
  5. 然后,您可以检查锁定线程的调用堆栈,并开始推断是哪些锁导致了死锁。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37077979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档