Java的垃圾回收机制是Java虚拟机提供的能力,用于在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间。
当程序创建对象、数组等引用类型实体时,系统会在堆内存中分配一块内存区域,对象就保存在这块区域内,当这块内存区域不被任何变量引用,那么这块内存就是垃圾,等待垃圾回收机制回收。
垃圾回收机制特征
1、垃圾回收机制只负责回收堆内存中的对象,不会受任何物理资源(数据库连接、网络IO);
2、系统不能精确控制垃圾回收机制运行,它会在适合的时间进行垃圾回收。当对象永久失去引用是,回收机制就进行垃圾回收。
3、垃圾回收机制,再回收垃圾之前,总会调用它的finalize方法,该方法可能是对象重新复活一次,从而导致回收机制取消回收。
对象在内存中的状态:
根据它被引用类型引用的状态进行拆分为三种状态:
1、激活状态:当对象创建完成后,被一个以上的引用变量引用时,则这个对象处于激活状态,程序可以通过引用变量来调用对象的属性和方法。
2、去活状态:如果一个对象不被任何的变量引用时,对象就会进入去活状态。在这种状态下垃圾回收机制准备回收这个对象所占用的内存,再回收前会调用的对象的finalze方法重新让一个变量引用这个对象则这个对象进入激活状态,否则进入死亡状态。
3、死亡状态:没有任何变量引用,并且垃圾回收机制调用对象的finalze方法仍然没能使对象激活,那么这个对象就永远失去了引用,进入死亡状态,系统会回收对象所占用的空间。
强制垃圾回收
强制回收的方法: 1、System.gc(); 2、Runtime.getRuntime().gc();
版权声明:【分享也是一种提高】个人转载请在正文开头明显位置注明出处
https://blog.csdn.net/java_student_x/article/details/80496811