【发布时间】:2011-04-17 13:24:32
【问题描述】:
“静态最终”是直接分配给年轻代还是老代或永久代? (我想它很可能会随着时间的推移进入旧代。)如果它是在 perm gen 中分配的,那么当在 Perm Gen 中进行类卸载时它会被垃圾收集吗?
【问题讨论】:
-
除非您在调试模式下运行,否则您无法卸载类,因此在应用程序结束之前,静态最终声明永远不会被 JVM 收集垃圾。
-
@Yanick - 实际上,使用
Class.forName()加载的任何类都可能变得无法访问,并且可能会被卸载/垃圾收集...取决于 JVM 选项。 -
@Stephen C,是的。然而,这是假设该类实际上是 GC 的候选者,并且 JVM 已设置为允许它。在大多数情况下,它不会发生。但我想我现在要跑题了……
-
@Yanick - 你的评论说“从不”......这是不正确的。
标签: java memory-management garbage-collection heap-memory