java中的强引用与弱引用的区别与用处

发布时间:2020-04-11 10:44:22 作者:小新
来源:亿速云 阅读:302

今天小编给大家分享的是java中的强引用与弱引用的区别与用处,很多人都不太了解,今天小编为了让大家更加了解java中的强引用与弱引用,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。

java中的强引用与弱引用的区别与用处

一、强引用

我们平时new了一个对象就是强引用,例如

Object obj = new Object();

即使在内存不足的情况下,JVM宁愿抛出OutOfMemory错误也不会回收这种对象。

(推荐视频教程:java视频教程)

二、软引用

如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。

SoftReference<String> softRef=new SoftReference<String>(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中的强引用与弱引用的区别与用处的简略介绍,当然详细使用上面的不同还得要大家自己使用过才领会。如果想了解更多,欢迎关注亿速云行业资讯频道哦!

推荐阅读:
  1. dll的弱引用和强引用
  2. java中=与==的区别有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java 强引用 弱引用

上一篇:c语言中=和==有什么区别

下一篇:java 多线程-可重入锁

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》