在处理了几个请求后,我的 Eclipse 开始使用 processWorkerExit() 方法。
根据这个链接,我知道如何抑制 Eclipse 的中断,但是有什么原因导致代码在这条线上中断。在这种情况下会出现内存泄漏吗?
Tomcat 7.0.27
Eclipse 3.7.2
JDK 7.0.02
在处理了几个请求后,我的 Eclipse 开始使用 processWorkerExit() 方法。
根据这个链接,我知道如何抑制 Eclipse 的中断,但是有什么原因导致代码在这条线上中断。在这种情况下会出现内存泄漏吗?
Tomcat 7.0.27
Eclipse 3.7.2
JDK 7.0.02
答案在这里:OpenJDK 在 processWorkerExit 上中断,没有断点
默认情况下,在 Eclipse 的调试模式下,会检查未捕获异常的中断。由于您在此处没有 catch 方法,因此可能会引发未捕获的异常,并且调试器会在引发异常之前立即为您中断。您可以在 Java->Debug 下的首选项中将其关闭。
调试器在该行停止的原因是因为try{}
块内的代码引发了异常,并且该特定代码行是引发异常后的下一个可执行代码行。您几乎可以肯定在控制台窗口中看到该异常的堆栈跟踪,因为默认情况下,冒泡的未捕获异常Thread.run()
将被发送到stderr
.
至于您关于是否可能存在内存泄漏的问题(或者更有可能是Java,资源泄漏):答案是肯定的,可能存在。但是该代码中没有任何内容表明存在. 如果有这样的泄漏,那几乎肯定是因为内部有不正确的异常处理。task
实现中存在不正确的异常处理。
我有同样的问题。如果您没有记录异常,它会在您的 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)