申明:本文已迁移到百家号http://baijiahao.baidu.com/s?id=1641181852243762554,欢迎移步
首先恭喜简书终于支持了LeTax公式直接编辑!
不得不说终于追上知乎的水平了。
言归正传。
java中为了让程序员能参与到垃圾回收机制中(不是说java的GC是全自动的吗?这要看从哪个方面讲了,其实如果开发人员能熟练掌握java的gc原理,对提升系统的稳定性有极大帮助),设计了4种引用级别:分别是强引用(new 出来的)、软引用、弱引用和虚引用。
本文不打算介绍这几种引用的用法。还不了解它们的读者可以自行百度(国内的几个搜索引擎,还是百度 最适合程序员)。
不过如果能使用谷歌的还是要使用谷歌,因为各个级别都有大坑,使用不当可能完全发挥不了期望的效果。但是国内很少有文章讲其中的注意事项,可能是使用的场景太少了。而国外(比如dzone)的博客就不少。
弱引用的对象在每次垃圾回收的时候都会被处理掉。WeakHashMap就是利用了这个特性来实现的本地缓存。
WeakHashMap的具体用法也请百度。这里假设你已经在用WeakHashMap了
WeakHashMap实现的缓存虽然好用,但是不具备定时过期的特性。如果没有等到垃圾回收(或者我不去看监控根本不知道是否进行过垃圾回收),但是想更新缓存之值,就无能为力了!
所以这里我们个WeakHashMap增加一个过期时间:
本文已迁移到百家号http://baijiahao.baidu.com/s?id=1641181852243762554,欢迎移步