我是编程语言的研究员,我正在使用动态创建/加载的类 实现多阶段元编程。
我正在考虑使用tomcat服务器来公开我的作品,所以我将编写一个创建的Servlet java类并加载它们(吨数)。
为了正确地垃圾收集这些创建的类,必须对相应的类加载器进行垃圾收集。 这是我作为Servlet编写者的责任还是tomcat框架的责任? 如果不是tomcat框架的责任,这是一个开放的安全问题吗?
谢谢!
答案 0 :(得分:1)
Tomcat在取消部署应用程序时,不会引用Web应用程序类加载器及其从中创建的对象(servlet,过滤器,监听器,...)。这应该使Web应用程序类加载器,其所有类和对象都有资格进行垃圾回收(除非你有类加载器泄漏)。
我想到有两种可能性可以算作安全问题。首先,如果您有类加载器泄漏,则一个Web应用程序可能会访问在同一个Tomcat实例中运行的另一个Web应用程序中的类。其次,如果您允许用户通过您的Web应用程序创建类,这显然会成为一个问题。
答案 1 :(得分:0)
由你来释放ClassLoaders。 Tomcat是一个servlet引擎,它不会干涉你的类加载或卸载。但是仍然不清楚这将是一个安全问题。