强引用:java中默认申明为强引用,强引用的对象不会被垃圾回收器回收,哪怕内存不足也只会OutOfMemoryError,可以通过将变量设置为null,表示可以适时的回收
例:Object obj = new Object();
软引用:当内存足够的情况下,软引用的对象不会被回收,只有当内存不足的情况下垃圾回收器才会回收软引用的对象,回收后内存还不够的话则抛出OutOfMemoryError
例:byte[] buff = new byte[1024 * 1024];
SoftReference<byte[]> sr = new SoftReference<>(buff);
弱引用:无论内存是否足够,只要JVM进行了垃圾回收,则弱引用就会被回收
例:byte[] buff = new byte[1024 * 1024];
WeakReference<byte[]> sr = new WeakReference<>(buff);
虚引用:虚引用是最弱的一种引用,和没有引用一样,它需要配合引用队列一起使用,当垃圾回收器回收,发现对象还在引用会先加入到引用队列,程序可以判断引用队列是否已经加入了引用,从而判断他是否要被垃圾回收,然后在垃圾回收前做一些处理
例:byte[] buff = new byte[1024 * 1024];
PhantomReference<byte[]> sr = new PhantomReference<>(buff);