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

 

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

 

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

相关文章:

  • 2021-11-10
  • 2022-12-23
  • 2021-10-03
  • 2021-04-27
  • 2022-01-07
  • 2021-12-29
猜你喜欢
  • 2022-02-20
  • 2021-11-08
  • 2021-04-01
  • 2021-11-09
  • 2022-12-23
  • 2021-05-21
  • 2022-02-23
相关资源
相似解决方案