每次我开始调试我的 WebApp(Netbeans 7.0 + spring 3 + jsp)时,在 Tomcat 引发此异常后,调试器会在 ThreadPoolExecutor.java 中中断几次:
“停止线程 http-bio-8080-exec-3 以避免上下文停止后潜在的内存泄漏。”
我无法确定为什么会这样。是因为我的代码有问题吗?如果是这样,如何定位问题?如果这是“正常的”,那么我怎样才能避免 IDE 每次都用它来打扰我呢?
任何线索将不胜感激。
最佳答案
这看起来像是在 7.0.6 中修复的 Bug 49159 - Improve ThreadLocal memory leak clean-up 的一部分,但它是 Tomcat 7+ 中 MemoryLeakProtection 机制的一部分
此处 Is this very likely to create a memory leak in Tomcat? 发布了另一个答案,更详细地解释了这一点。
正如您在评论中提到的,您可以使用 Tools|Miscellaneous|Java|Java Debugger|General (Netbeans) 禁用 NetBeans 中的调试器,并取消选择 stop on未捕获的异常复选框。
关于Tomcat 停止线程以避免潜在的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8747455/