JVM的永久代中会发生垃圾回收么?
在Java虚拟机(JVM)中,永久代(PermGen)是用于存放类的元数据、常量池、静态变量等信息的内存区域。永久代的垃圾回收机制与堆内存的垃圾回收机制有所不同。
类的卸载:在永久代中,垃圾回收主要发生在类的卸载时。当一个类不再被使用(例如,类的ClassLoader被卸载),JVM会回收该类占用的内存。这种情况通常发生在动态加载和卸载类的场景中,比如使用Java EE的Web应用程序时,应用程序的类加载器被卸载。
常量池和静态变量:常量池和静态变量的内存不会被回收,除非它们所在的类被卸载。也就是说,永久代中的数据在类被卸载之前是不会被回收的。
是的,JVM的永久代中会发生垃圾回收,主要是在类被卸载时。随着Java 8的引入,永久代被替换为元空间,垃圾回收的机制也有所变化。