Eclipse“终止/断开所有”行为

时间:2016-01-24 00:26:58

标签: java eclipse

当我在eclipse的Java项目中工作时,我右键单击Console区域,并注意到Terminate / Disconnect All按钮已启用。我对此感到惊讶,因为我正在处理的应用程序是线程化的。起初我认为这意味着并非所有线程都已终止,但在设计过程中,我在组织方面一丝不苟。当然,我回过头来看看代码是否会导致其中一个线程挂起,但我没有发现这个问题。

之后,我写了一个小应用程序试图诊断这个问题,结果更加惊人。

\n

即使是这个简单的程序也需要通过“终止/断开所有”项来终止。

enter image description here

在eclipse上解释这种行为的原因是什么?

2 个答案:

答案 0 :(得分:2)

此示例中的Java程序终止自身。 “main”方法运行完成并退出,这就导致JVM进程终止。如果运行该程序然后转到“调试”视图,则可以看到此信息。你看到发布的“javaw [.exe]”子行说“终止”了。这代表退出的,即不再运行的JVM。您可以使用操作系统的常用实用程序(例如Windows上的“ps”或Process Explorer“)来验证JVM是否已用完,以验证测试程序没有”java [w]“进程。

启动纯粹是一个内存中的Eclipse对象,它保存在Debug视图中,因此用户仍然可以检查与启动相关联的Console页面。通常,输出仍然是用户感兴趣的,特别是在程序终止自身的这种情况下,用户甚至不必在Eclipse中选择“终止”按钮。启动仍然存在于Debug视图中,并且关联的Console页面仍然存在,但JVM已退出并消失。

Eclipse在菜单项的文本中有“Terminate ...”的菜单项(在Debug视图的右键菜单中)这一事实是不幸的,并且可以误导,因为程序已经终止了案件。菜单项文本不会改变启动是否处于运行状态。

为了摆脱启动,Debug视图中有一个工具栏按钮。同样,为了摆脱Console页面,Console视图中有一个工具栏按钮。

答案 1 :(得分:0)

您的程序已终止,如控制台顶部的<terminated>消息所示。

当程序终止时,Eclipse不会破坏用于立即运行程序的JVM,因为这会清除控制台日志。相反,它会保留JVM,直到您执行

之一
  1. 单击“删除启动”或“删除所有已终止的启动”按钮
  2. 单击“删除所有已终止”上下文菜单
  3. 运行新程序。