首页 > 解决方案 > Eclipse 调试视图中的红色线程是什么意思?

问题描述

在 Eclipse 中调试我的 Java 应用程序期间,调试视图以红色文本颜色和锁定符号显示一些线程:

在 Eclipse 调试视图中,一些线程显示为红色

谁能解释这意味着什么?

我目前正在我的代码中寻找(潜在的)死锁。这就是为什么红线困扰我的原因。但是当我挂起 VM 时,这些线程显然不涉及死锁情况:

在此处输入图像描述

我研究了Debug View 的 Eclipse 帮助页面,但没有找到任何解释。

编辑:正如@howlger 正确指出的那样,Eclipse 提示和技巧(JDT)页面上有一条注释,指出“......死锁中涉及的线程以红色呈现......”。但这是否也意味着死锁检测是将线程渲染为红色的唯一原因?如果是这样,我的情况可能只是日食内部启发式的误报。一旦我挂起我的虚拟机,eclipse 就会详细调查监视器的所有权,并发现没有实际的死锁情况。这也与挂起的线程外观一致(我在上面的第二个屏幕截图):挂起时,线程突然不再是红色了。

标签: javaeclipsedebugging

解决方案


红色线程涉及死锁,但您必须启用Show Monitors才能查看哪个线程拥有哪个对象。

请参阅Eclipse 提示和技巧 (JDT)帮助页面:

线程和监视器

Java 调试器可以选择在“ 调试”视图中显示监视器信息。使用Debug 视图下拉菜单中的Show Monitors操作来显示哪些线程持有锁以及哪些线程正在等待获取锁。涉及死锁的线程以红色呈现。

线程和监视器


推荐阅读