16

在处理了几个请求后,我的 Eclipse 开始使用 processWorkerExit() 方法。

根据这个链接,我知道如何抑制 Eclipse 的中断,但是有什么原因导致代码在这条线上中断。在这种情况下会出现内存泄漏吗?

Tomcat 7.0.27
Eclipse 3.7.2
JDK 7.0.02

在此处输入图像描述

4

3 回答 3

10

答案在这里:OpenJDK 在 processWorkerExit 上中断,没有断点

默认情况下,在 Eclipse 的调试模式下,会检查未捕获异常的中断。由于您在此处没有 catch 方法,因此可能会引发未捕获的异常,并且调试器会在引发异常之前立即为您中断。您可以在 Java->Debug 下的首选项中将其关闭。

于 2015-03-25T11:26:27.290 回答
1

调试器在该行停止的原因是因为try{}块内的代码引发了异常,并且该特定代码行是引发异常后的下一个可执行代码行。您几乎可以肯定在控制台窗口中看到该异常的堆栈跟踪,因为默认情况下,冒泡的未捕获异常Thread.run()将被发送到stderr.

至于您关于是否可能存在内存泄漏的问题(或者更有可能是Java,资源泄漏):答案是肯定的,可能存在。但是该代码中没有任何内容表明存在. 如果有这样的泄漏,那几乎肯定是因为内部有不正确的异常处理。task实现中存在不正确的异常处理。

于 2013-03-14T02:18:21.483 回答
0

我有同样的问题。如果您没有记录异常,它会在您的 try/catch 子句中中断。尝试像这样向 LogCat 插入断点或输出:

try
{
   //HERE I'VE PUT ALL THE FUNCTIONS THAT WORK FOR ME
   Log.e("tag", "Sth passed!");
}
catch (Exception e)
{
   //The task failed
   Log.e("tag", e.getMessage());           
}

如果您没有 try/catch 块,请将其放在上面的代码中。在 LogCat 中,您可以看到在异常之前运行的最后一行代码,它将帮助您在代码中找到错误,如下所示:

08-28 05:49:52.321: E/SQLiteDatabase(834): 在 java.lang.Thread.run(Thread.java:841)

于 2013-08-28T06:02:31.373 回答