美文网首页
强引用,软引用

强引用,软引用

作者: song_jx | 来源:发表于2020-02-24 17:44 被阅读0次

强引用

强引用就是我们常见的普通对象引用,只要还有强引用指向一个对象,对象就不会被垃圾收集器回收。

Object o = new Object();  //强引用

一个方法的内部有强引用,引用是保存在栈中的,引用指向的内容是保存在堆中的。方法运行完成后,会退出方法栈,引用计数变为0,这个对象就会被回收。
对于全局变量,需要将对象赋为null才能被回收。
只要超出了引用作用域或者赋值为null,就可以被回收,回收时机要看具体的回收策略。

软引用

软引用(SoftReference),可以让对象豁免一些垃圾收集,当内存不足时,在OutOfMemoryError之前会对软引用的对象进行回收。软引用可以和引用队列(ReferenceQueue)联合使用,回收软引用指向的对象时,将软引用加入与之相关联的引用队列中,通过使用队列的poll方法来检查关心的对象是否已被回收,如何队列是空的,则返回null,否则返回队列中前面的一个Reference对象。软引用可以用于实现内存敏感的缓存,当内存充足时,可以暂时保留缓存,内存不足时则清理缓存。

相关文章

网友评论

      本文标题:强引用,软引用

      本文链接:https://www.haomeiwen.com/subject/dxubqhtx.html