2015-03-25 39 views
2

我有使用System.exit(0)正在退出的代码,但javaw.exe仍在任务管理器中运行。代码块中没有例外,我们正在到达代码行System.exit(0)在什么情况下,system.exit(0)后javaw.exe仍然保留在内存中。

任何机构可以告诉在什么条件下可能无法杀死javaw.exe过程

+0

“... System.exit(0)和所有** t **但是...”? – paxdiablo 2015-03-25 04:54:48

+0

你为什么如此确定到达出口?你能分享你的代码吗? – ra2085 2015-03-25 05:03:06

+0

线程可能在您的应用中仍然存在,因此未到达出口。使用控制台调试你的代码,停止使用javaw。使用javavm(包含在sdk中)来评估应用程序中任何可能的泄漏/死锁/任何错误。 – ra2085 2015-03-25 05:07:03

回答

0

一般情况下不应该有更多的javaw.exe。另外一个表示Java应用程序没有完全终止。

请注意,System.exit会导致执行所有注册的关闭挂钩。您可以使用Runtime.halt(忽略关闭挂钩的执行)来检查关闭挂钩是否存在问题。

如果没有问题,任何关机应该有一些线程。也许使用Java Mission Control或类似的东西来深入了解这一点。您也可以强制Java编写线程转储。

在极少数情况下,您已经利用了JDK错误,您会发现一些名称与hs_error类似的文件(可能位于您的家庭/用户配置文件目录中)。

相关问题