java中的强引用与弱引用的区别与用处
发表于:2024-11-26 作者:热门IT资讯网编辑
编辑最后更新 2024年11月26日,今天小编给大家分享的是java中的强引用与弱引用的区别与用处,很多人都不太了解,今天小编为了让大家更加了解java中的强引用与弱引用,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。一、强
今天小编给大家分享的是java中的强引用与弱引用的区别与用处,很多人都不太了解,今天小编为了让大家更加了解java中的强引用与弱引用,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。
一、强引用
我们平时new了一个对象就是强引用,例如
Object obj = new Object();
即使在内存不足的情况下,JVM宁愿抛出OutOfMemory错误也不会回收这种对象。
(推荐视频教程:java视频教程)
二、软引用
如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。
SoftReferencesoftRef=new SoftReference (str); // 软引用
用处:
软引用在实际中有重要的应用,例如浏览器的后退按钮。按后退时,这个后退时显示的网页内容是重新进行请求还是从缓存中取出呢?这就要看具体的实现策略了。
(1)如果一个网页在浏览结束时就进行内容的回收,则按后退查看前面浏览过的页面时,需要重新构建。
(2)如果将浏览过的网页存储到内存中会造成内存的大量浪费,甚至会造成内存溢出。
如下代码:
Browser prev = new Browser(); // 获取页面进行浏览SoftReference sr = new SoftReference(prev); // 浏览完毕后置为软引用 if(sr.get()!=null){ rev = (Browser) sr.get(); // 还没有被回收器回收,直接获取}else{ prev = new Browser(); // 由于内存吃紧,所以对软引用的对象回收了 sr = new SoftReference(prev); // 重新构建}
以上就是java中的强引用与弱引用的区别与用处的简略介绍,当然详细使用上面的不同还得要大家自己使用过才领会。如果想了解更多,欢迎关注行业资讯频道哦!