- Strong Reference 强引用
Object obj = new Object();
这种引用是最坚固的,仅仅当这个引用被程序员人为的cut掉时,比如obj = null,这个object才会被标记为可以被垃圾回收的。
- SoftReference 软引用
SoftReference<TestUser> softUser = new SoftReference<>(new TestUser(1,"name","addr","13912341234"));
这种引用比强引用弱一级,当JVM垃圾回收模块发现整个程序即将发生OOM的时候,会牺牲掉软引用引用的对象,以换区内存空间,保护程序不crashdown。
- WeakReference 弱引用
WeakReference<TestUser> weakUser = new WeakReference<>(new TestUser(1,"name","addr","13912341234"));
这种引用比软引用还弱一级,当JVM垃圾回收模块进行full gc的时候,这种引用引用的对象就会被回收了,这种对象就是那种可用可不用的对象,有它能用上更好,没有也没关系。
一般来讲写代码的时候都是强引用,如果内存相对于程序所需要的内存而言比较紧张的时候,就可以考虑下面两种引用去包装对象。