4种引用类型: 强引用,弱引用,软引用,虚引用。
引用类型优点: 1.可以通过代码控制对象的生命周期。 2.便于jvm进行垃圾回收。
强引用: 只有引用释放对象才被回收,这是常见的new出来的对象。 也可以将引用赋值为null,中断引用和对象之间的关联。jvm会在合适的时间回收该对象。
软引用: 软引用关联着的对象,只有内存不足的时候jvm才会回收该对象。适合用来实现缓存,网页缓存,图片缓存。
弱引用: 描述非必须的对象,无论内存是否满足,该对象都会被回收。主要用于监控对象是否被垃圾回收器标记为即将回收对象,可以通过弱引用的isEnQueued方法返回对象确认是否被垃圾回收器标记
利用软引用和弱引用解决OOM问题
假设一个应用,需要读取大量的本地图片。每次从硬盘取数据,影响性能和客户体验。全部加载到内存,可能会产生内存溢出,此时可以利用软引用和弱引用解决问题。
创建一个hashmap 保存图片路径 和 相应图片对象关联的软引用之间的映射关系,内存不足时,jvm会自动回收这些对象。