【发布时间】:2012-04-20 10:32:47
【问题描述】:
1) 如果我使用下面的 Class.forName() 被多次调用,会不会导致内存泄漏?
Class.forName("MyClass")
2) 或者,tomcat 的 WebAppClassLoader 是否会检查 "MyClass" 是否已经加载并使用缓存的实例。
3) 如果问题 (2) 的答案是“否”,那么如果我打开 PermGen 扫描并设置相关的 jvm 参数,之前加载的类是否会被垃圾收集。
如果我想避免重新加载类,使用类实例缓存的最佳方法是什么。我可以将类实例存储为 HashMap
【问题讨论】:
-
我不认为它应该泄漏内存,只要它首先是从同一个类加载器加载的。此外,ClassLoader 也随着时间的推移而变化听起来不太可能。
标签: java memory-leaks classloader