一、强引用:
正常的new出对象被引用指向就是强引用。可直接通过引用操纵对象。gc不会回收被强引用指向的对象,除非引用等于null
二、软引用
new出SoftReference在它的构造方法里嵌套别的对象
1、m指向sr强引用,sr对象指向字节数组软引用。每次gc并不会主动清理软引用,只有当有其他强引用进来,并且堆区空间不够了则才会被清理。可以通过引用.get方法获取嵌套的对象
2、作用:用于缓存,把一些经常用的设为软引用(让SoftReference里嵌套要用到的东西),这样它就不会被gc回收掉,可以被经常使用。而且当内存不够时,它可以随时被其他强引用干掉
三、弱引用
new出WeakReference在它的构造方法里嵌套别的对象
1、内存图如上。只要垃圾回收启动一定会被回收。可以通过引用.get方法获取嵌套的对象
2、作用:在ThreadLocal中防止内存泄露(详见多线程专栏的ThreadLocal)
四、虚引用
new