Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想 必须编写一些动态加载类的工具。所以我必须为此调用 Class.forName 函数。可以有很多类 - 大约 10000 个。是否可以在所有它们被加载并且不需要之后释放内存?
这个问题也许可以做一些澄清。OP 是加载类还是类定义的实例?
如果问题涉及实例,那么正如 Clement Berthou 所说,您需要做的就是取消引用创建的实例,它们最终应该被垃圾收集。您可以随时通过调用来请求垃圾收集System.gc()。
System.gc()
对于类定义,我认为情况相同,但略有不同。即使该类的所有实例都已被取消引用,仍然可能存在来自最初加载的 ClassLoader 的引用。
因此,我认为您需要取消引用用于加载类定义的 ClassLoader,以使类定义可用于垃圾收集。不过我不确定,上次我直接看类加载是很久以前的事了。