整理下关于JAVA中的内存处理机制:(李刚老师的疯狂JAVA讲义中关于垃圾回收机制讲解的比较详细,在此自己做一个总结)
1、JAVA中的垃圾回收机制是对堆堆内存中的对象进行的,特点:
(1)无法精确的控制垃圾回收运行的时间,这个完全由JAVA虚拟机根据系统内存问题而定,不过我们可以强制进行垃圾回收(System.gc()或者Runtime.getRuntime().gc()),但是这样做不是明智的
(2)进行垃圾回收之前,会先调用finalize()方法,该方法主要是进行一些堆内存资源的管理工作,可能会使一部分未被引用的对象重新获得引用
2、JAVA对象的生命周期:(这三个状态由李刚老师提出,我根据自己的见解重新进行了命名)
存活(live) 可复活(recovery) 死亡(dead)
存活状态:在被使用中
可复活状态:对象暂时未被使用,但是随时会被调用使用
死亡状态:不会再使用的,等待被回收的对象
3、关于JAVA中的几种引用类型
(1)强引用:很常见的一种引用方式,是我们经常使用的一种引用方式,
(2)软引用(SoftReference):当系统内存不足时,该种引用关联的对象很可能会被回收掉,这个引用常用语内存敏感的程序中
(3)弱引用(WeakReference):同软引用类似,但是该种引用关联的对象在JVM进行垃圾回收时总是会被回收的
(4)虚引用(PhantomReference):结合引用队列进行使用,主要用于跟踪对象
如果希望尽可能的减小程序在其生命周期中所占用的内存大小时,使用这些引用就很有用