是否将“静态最终”直接分配给年轻一代或老一代或烫发一代?
static final变量引用的对象将根据与其他任何对象相同的规则进行分配。它最有可能在年轻一代或老一代中分配(如果它很大,并且适用某些其他条件)。
将通过
new执行一些任意代码来分配对象。JVM无法知道该对象(最终)将被分配给
static final变量。
包含静态变量的框架空间可能在permGen中分配。当然,这不是常规的Java对象。
如果在perm gen中分配了它,那么在Perm Gen中进行类卸载时,是否将其垃圾回收?
这取决于permGen是否被垃圾收集。在现代JVM中,是这样,我希望由卸载的类静态变量引用的对象将在同一GC周期或下一个GC周期中被垃圾回收…假设它们是不可访问的。
无论哪种方式,都不应将应用程序编码为依赖于这些细节中的任何一个。它们是特定于JVM的。
请注意,从Java 8开始,由于permgen不再存在,因此该问题不存在。



