10. JVM的永久代中会发生垃圾回收么
JVM的永久代(PermGen)中会发生垃圾回收。
在Java 8之前的版本中,永久代用于存储类的元数据、常量池、静态变量等,当永久代空间不足或超过某个阈值时,会触发完全垃圾回收(Full GC),以回收不再使用的类定义和其他资源,防止内存溢出
然而,从Java 8开始,永久代被元空间(Metaspace)所替代。元空间使用直接的本地内存而不是虚拟机内存,因此它不参与Java堆的垃圾回收过程。尽管元空间本身不进行垃圾回收,但类加载器相关的无用类定义可以被卸载,从而间接回收元空间的内存
垃圾回收机制
Full GC:在Java 8之前的版本中,当永久代空间不足时,会触发Full GC,回收不再使用的类定义和其他资源
Metaspace:在Java 8及之后的版本中,元空间替代了永久代。元空间不进行垃圾回收,但可以通过卸载无用类定义来间接回收内存