软/弱/虚引用

https://www.jianshu.com/p/825cca41d962jvm

 

引用的本质是,能够把jvm内存当作一个大的池化技术,池化技术最重要的是逐出策略。那么,这三种引用对应的逐出策略是不同的,具体能够看上面连接里的介绍。简单来讲,强引用的逐出策略是,若是一个对象没有了强引用,就逐出。软引用是,若是没有了强引用,gc是不会把这个对象逐出的,除非在gc后,仍然内存不够用,这时会进行第二次gc,并把这些对象逐出。其余俩个看上面的连接介绍。对象

 

引用对象的另外一个做用是,在jvm进行回收的时候,会进行回调通知,利用这个功能能够实现一些有意思的事情,好比WeakReferenceMap. 具体实现能够看WeakReference的实现和WeakReferenceMap的实现。 WeakReferenceMap其实也是池化技术的一种特殊场景,正常的是cache的对象自己的过时逐出,而WeakReferenceMap实现的是,key过时后,对value的逐出。内存

相关文章
相关标签/搜索