强引用是最广泛的引用,java垃圾回收机制不会回收强引用的对象。它的实现方式以下:java
Object object = new Object();
只有当object这个对象使用完毕,失去引用后才可能会被回收。可是若是object是一个全局变量,那么只能经过object=null;强制使该对象失去引用,不然除非程序结束,该对象不会被回收。spa
当使用软引用时,除非出现内存不足,不然不会触发回收机制。它的实现方式以下:线程
Object object = new Object(); SoftReference<Object> soft = new SoftReference<Object>(object);
当使用弱引用时,每次内存回收线程运行时,该对象都会被回收。它的实现方式以下:code
Object object = new Object(); WeakReference<Object> weakReference = new WeakReference<Object>(object);
当使用虚引用时,在任什么时候刻该引用都有可能会被回收,至关于未被引用。虚引用主要用于跟踪对象被垃圾回收的活动。 当回收线程运行准备回收虚引用的对象时,会将该对象放入对应的引用队列中。经过监控这个引用队列,能够在对象被回收前进行一些处理。虚引用必须与ReferenceQueue一块儿使用。它的实现方式以下:对象
ReferenceQueue<Object> queue = new ReferenceQueue<>(); Object object = new Object(); PhantomReference<Object> phantomReference = new PhantomReference<>(object,queue);