成为垃圾的标准
对于非线程对象,当所有的活动线程都不能访问到改对象时候,成为垃圾
对于线程对象,除满足以上条件外,还要求线程处于死亡或者还处于新建状态
符合条件的几种情况
对象设为Null,代码都应该这样写,释放资源
应用指向别的对象
语句块结束,局部应用消亡
Java****不用手动管理内存,只是需要程序员管理对象是否变为垃圾
垃圾收集器
Runtime类,一个运行时类,提供给你运行时的信息
System类
都提供了垃圾回收的方法,让你可以手动调用gc();
垃圾回收前的处理工作
Finalize方法,实际上就相当于析构方法
Finalize方法只能执行一次,如果在finalize方法故意挽救对象,那么第二次直接清除,保证了安全,防止递归调用死。
三种特殊的引用
弱引用,即使释放也还是存在 java.lang.ref.WeakReference
对于弱引用,值得注意的是有java.util.WeakHashMap这个映射
软引用,只要有内存就不释放 java.lang.ref.SoftReference
幻影引用,暂时不知道作用 java.lang.ref.PhantomReference