我是一名编程语言研究人员,我正在使用动态创建/加载的类 实现多阶段元编程。
我正在考虑使用 tomcat 服务器来公开我的作品,所以我将编写一个 Servlet,它创建 java 类并加载它们(大量)。
要正确地对此类创建的类进行垃圾回收,必须对相应的类加载器进行垃圾回收。 这是我作为Servlet编写者的责任还是tomcat框架的责任? 如果不是tomcat框架的责任,这是一个开放的安全问题吗?
谢谢!
最佳答案
Tomcat 在取消部署应用程序时取消引用 Web 应用程序类加载器及其创建的对象(servlet、过滤器、监听器……)。这应该使 Web 应用程序类加载器及其所有类和对象都符合垃圾收集的条件(除非您有类加载器泄漏)。
我想到了两种可能被视为安全问题的可能性。首先,如果您有类加载器泄漏,一个 Web 应用程序可能会从运行在同一 Tomcat 实例中的另一个 Web 应用程序访问类。其次,如果您允许用户通过您的 Web 应用程序创建类,这显然会成为一个问题。
关于java - Tomcat - 动态加载类的垃圾回收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19482048/