什么是类卸载?在哪些条件下会发生?
类卸载是指JVM在运行过程中,当某个类不再被任何地方引用时,JVM会把这个类的定义以及所有的对象实例全部清除出内存,以便释放空间。这个过程就叫做类卸载。
一般来说,以下几种情况下会发生类卸载:
- 当某个类的ClassLoader实例被垃圾回收,这个类就会被卸载。这通常发生在动态加载和卸载类的场景,例如web服务器在重新加载web应用时。
-
当一个类没有活动的实例,且没有其他类引用该类,也没有对该类的引用的时候,该类就可能被卸载。
-
当JVM即将耗尽内存时,JVM会尝试卸载一些类以释放内存。
举一个例子,比如我们有一个web应用服务器,它可以动态加载和卸载不同的web应用。当我们把一个web应用停掉的时候,服务器会停止该web应用的ClassLoader,这时,由这个ClassLoader加载的所有类就会被卸载,以释放内存。