,需要被回收.一般有两种判别方式:
引用计数法 (Reference Counting)
每个对象都有一个整型的计数器,当这个对象被一个变量或对象引用时,该计数器加一;当该引用失效时,计数器值减一.当计数器为...()
未覆盖该或已调用过该方法,直接释放对象内存
已覆盖该方法且还未被执行,则将finalize()扔到F-Queue队列中
执行F-Queue中的finalize()
虚拟机会以较低的优先级执行这些...该类所有实例都已被回收
即Java堆不存在该类的任何实例
加载该类的ClassLoader已被回收
该类的java.lang.Class对象没有被任何对象或变量引用,无法通过反射访问该类的方法
只要一个类被虚拟机加载进方法区...接下来就使用Survior2+Eden进行内存分配
通过这种方式,只需要浪费10%的内存空间即可实现带有压缩功能的垃圾收集方法,避免了内存碎片的问题.
4.2.3 分配担保
准备为一个对象分配内存时,发现此时...它和没有引用没有区别,无法通过虚引用取得对象实例.
设置虚引用唯一的作用就是在该对象被回收之前收到一条系统通知.
虚引用通过PhantomReference类来实现.