日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java中WeakReference,SoftReference,PhantomReference和Strong Reference之间的区别

發布時間:2023/12/3 java 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java中WeakReference,SoftReference,PhantomReference和Strong Reference之间的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

很長一段時間以來,WeakReference和SoftReference都已添加到Java API中,但是并不是每個Java程序員都熟悉它。 這意味著在Java中使用WeakReference和SoftReference的位置和方法之間存在差距。 參考類對于垃圾收集的工作方式尤其重要。 眾所周知,垃圾收集器從有資格進行垃圾收集的對象中回收內存,但是很少有程序員知道這種資格的確定取決于指向該對象的引用類型。 這也是Java中WeakReference和SoftReference之間的主要區別 。 如果只有弱引用指向該對象并且它會被急切地收集,則垃圾收集器可以收集該對象;另一方面,當JVM絕對需要內存時,將收集具有SoftReference的對象。 SoftReference和WeakReference的這些特殊行為使它們在某些情況下很有用,例如SoftReference在實現緩存方面看起來很完美,因此當JVM需要內存時,它會刪除只有SoftReference指向它們的對象。 另一方面,WeakReference非常適合存儲元數據,例如,存儲ClassLoader引用。 如果沒有加載任何類,則沒有必要保留ClassLoader的引用,WeakReference會在刪除最后一個強引用后立即使ClassLoader有資格進行垃圾回收。 在本文中,我們將探索有關Java中各種參考的更多信息,例如,強參考和幻影參考。

對于那些不知道的人,Java有四種參考:

  • 強大的參考
  • 參考不足
  • 軟參考
  • 幻影參考
  • 強引用是最簡單的,因為我們在日常編程中使用它,例如在代碼中,String s =“ abc”,引用變量s具有對String對象“ abc”的強引用。 任何附加了“強引用”的對象都不符合垃圾回收的條件 。 顯然,這些是Java程序所需的對象。 弱引用使用java.lang.ref.WeakReference類表示,您可以使用以下代碼創建弱引用:

    Counter counter = new Counter(); // strong reference - line 1 WeakReference<Counter> weakCounter = new WeakReference<Counter>(counter); //weak reference counter = null; // now Counter object is eligible for garbage collection

    現在,只要您將強引用計數器設置為null,在第1行創建的計數器對象就可以進行垃圾回收; 因為它沒有更多的“強引用”和“弱引用”(由引用變量“ weakCounter”引用)無法防止對Counter對象進行垃圾回收。 另一方面,如果這是“軟引用”,則在JVM絕對需要內存之前,不會垃圾收集Counter對象。 Java中的軟引用使用java.lang.ref.SoftReference類表示。 您可以使用以下代碼在Java中創建SoftReference。

    Counter prime = new Counter(); // prime holds a strong reference - line 2 SoftReference<Counter> soft = new SoftReference<Counter>(prime) ; //soft reference variable has SoftReference to Counter Object created at line 2prime = null; // now Counter object is eligible for garbage collection but only be collected when JVM absolutely needs memory

    在將強引用設為空之后,在第2行上創建的Counter對象僅具有一個軟引用,該軟引用不能阻止對其進行垃圾回收,但可以延遲收集,對于WeakReference來說這是急切的。 由于SoftReference和WeakReference之間的主要區別 ,SoftReference更適合于緩存,而WeakReference更適合于存儲元數據 。 WeakReference的一個方便示例是WeakHashMap,它是Map接口的另一種實現,例如HashMap或TreeMap,但具有一個獨特的功能。 WeakHashMap將鍵包裝為WeakReference,這意味著一旦刪除了對實際對象的強引用,WeakHashMap內部存在的WeakReference便不會阻止它們被垃圾收集。

    幻象引用是java.lang.ref包中提供的第三種引用類型。 幻影引用由java.lang.ref.PhantomReference類表示。 只要垃圾收集器喜歡,便可以收集僅具有幻影引用指向它們的對象。 與WeakReference和SoftReference類似,您可以使用以下代碼創建PhantomReference:

    DigitalCounter digit = new DigitalCounter(); // digit reference variable has strong reference - line 3 PhantomReference<DigitalCounter> phantom = new PhantomReference<DigitalCounter>(digit); // phantom reference to object created at line 3digit = null;

    刪除“強引用”后,在第3行創建的DigitalCounter對象可以隨時進行垃圾回收,因為它僅具有一個指向它的PhantomReference,這不能阻止它進行GC處理。

    除了了解WeakReference,SoftReference,PhantomReference和WeakHashMap之外,還有一個名為ReferenceQueue的類值得一提。 您可以在創建任何WeakReference,SoftReference或PhantomReference時提供ReferenceQueue實例,如以下代碼所示:

    ReferenceQueue refQueue = new ReferenceQueue(); //reference will be stored in this queue for cleanupDigitalCounter digit = new DigitalCounter(); PhantomReference<DigitalCounter> phantom = new PhantomReference<DigitalCounter>(digit, refQueue);

    實例的引用將附加到ReferenceQueue,您可以通過輪詢ReferenceQueue來使用它執行任何清理。 該圖很好地總結了對象的生命周期。

    這就是Java中WeakReference和SoftReference之間的區別 。 我們還學習了引用類的基礎,例如Java和WeakHashMap和ReferenceQueue中的弱引用,軟引用和幻像引用。 謹慎地使用引用可以幫助進行垃圾回收,并在Java中實現更好的內存管理。

    翻譯自: https://www.javacodegeeks.com/2014/03/difference-between-weakreference-vs-softreference-vs-phantomreference-vs-strong-reference-in-java.html

    總結

    以上是生活随笔為你收集整理的Java中WeakReference,SoftReference,PhantomReference和Strong Reference之间的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 天天做天天爱 | 大乳女喂男人吃奶 | 亚洲搞av | 成人黄色片免费看 | 人妻 日韩精品 中文字幕 | 欧美色综合 | 性五月天 | 亚洲第一视频在线播放 | 国产91在线观看 | 国产第一页在线观看 | 天天操天天干天天 | 亚洲69视频 | 91国模少妇一区二区三区 | 欧美网站在线观看 | 激情亚洲网 | 超碰精品在线观看 | 第一福利在线视频 | 丁香花电影免费播放电影 | 国产精品久久久一区二区三区 | 中国大陆一级毛片 | 成人国产精品一区二区 | 亚洲国产传媒 | 亚洲色图美腿丝袜 | 久久久精品人妻一区二区三区四 | 亚洲综合a | 性av在线| 国产成人精品123区免费视频 | 成人av网站在线 | 成人一区二区三区在线观看 | aa免费视频 | 天天爱天天做 | 中文字幕日韩欧美一区二区 | 久久亚洲色图 | 少女情窦初开的第4集在线观看 | 一级国产精品 | 国产精品久久久久久人妻精品动漫 | 福利毛片 | 黑人黄色片 | 国产毛片久久久久久久 | 色免费看 | xxxxxx国产| 九一爱爱 | 美味的客房沙龙服务 | 打屁股无遮挡网站 | 最新激情网 | 中文字幕资源网 | 国产a久久麻豆入口 | 禁断介护av | 二区三区视频 | a级黄色网址 | 精品无码一区二区三区免费 | 久久中出 | 日韩欧美理论片 | 中文字幕成人 | 日韩免费高清视频 | 亚洲AV无码国产成人久久 | 亚洲黄色在线播放 | 99热这里只有精品在线 | 新版天堂资源中文8在线 | 欧美毛茸茸 | 污的视频在线观看 | 黄色三级三级三级三级 | 国内自拍第二页 | 豆花av| 蘑菇福利视频一区播放 | 在线岛国 | 亚洲激情六月 | 色综合色综合色综合 | 亚洲精品在线网站 | 蜜桃av成人永久免费 | 黄色工厂在线观看 | 国内外成人在线视频 | 黄av在线播放 | 91在线免费视频观看 | 西西444www大胆无视频 | 清冷学长被爆c躁到高潮失禁 | av毛片在线 | av最新 | 亚洲精品 日韩无码 | 91精品中文字幕 | 美女打屁股网站 | 免费看特级毛片 | 青青国产| 中文字幕 视频一区 | 国产伦精品免费视频 | 日本中文字幕观看 | 久草成人在线 | 丁香八月婷婷 | 五月情婷婷| 伊人一区 | 51调教丨国产调教视频 | 精品福利三区3d卡通动漫 | 欧美aa在线观看 | 狠狠躁日日躁 | 最新极品jizzhd欧美 | 爱爱视频在线播放 | 久久免费大片 | 欧美视频一区二区三区四区在线观看 | 欧美日韩成人在线视频 |