ThreadLocal 会像在 Tomcat 中泄漏一样导致 Glassfish 服务器中的内存泄漏吗?为什么? http://wiki.apache.org/tomcat/MemoryLeakProtection
问问题
1719 次
2 回答
1
是的,它会泄漏,根据这个相对较新的 Glassfish JIRA 问题,Glassfish 甚至不会警告您:
http://java.net/jira/browse/GLASSFISH-14128
然而,需要说明的是,特定于 ThreadLocal 的泄漏不是应用程序/Web 服务器本身的“错误”,而是在这些容器中运行的组件中的代码问题(无论这些组件是 servlet、会话 bean 还是其他)。
应用服务器/Web 容器一般尝试做的是保护开发人员免于编写大量维护代码,并使他专注于业务逻辑。然而,他需要对应用程序服务器的工作方式(线程池、类加载器、部署/取消部署机制,...)有所了解,以便正确完成或避免此类 ThreadLocal 问题。这并不总是那么容易,而且可能非常棘手。我记得在 Glassfish 中阅读过有关内存泄漏问题的信息?与使用自定义日志级别有关。
Apache Tomcat 所做的是它有一个辅助机制来警告用户/处理用户代码中一些常见的内存泄漏问题。但即使在问题中提供的链接中,您也可能会读到并非所有可能的 ThreadLocal 内存泄漏都是使用此机制自动完成的。
Glassfish 似乎还没有这个附加功能。
于 2011-10-27T16:44:23.030 回答
0
于 2011-10-27T17:27:33.757 回答