在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    HashSet與WeakHashMap的理解

    HashSet是如何實現(xiàn)的?

    HashSet是對HashMap的簡單包裝,對HashSet的函數(shù)調用都會轉換成合適的HashMap方法

    //HashSet是對HashMap的簡單包裝public class HashSet{……private transient HashMap map;//HashSet里面有一個HashMap // Dummy value to associate with an Object in the backing Map private static final Object PRESENT = new Object(); public HashSet() { map = new HashMap(); } …… public boolean add(E e) {//簡單的方法轉換 return map.put(e, PRESENT)==null; } ……}

    什么是WeakHashMap?

    我們都知道Java中內存是通過GC自動管理的,GC會在程序運行過程中自動判斷哪些對象是可以被回收的,并在合適的時機進行內存釋放。GC判斷某個對象是否可被回收的依據(jù)是,是否有有效的引用指向該對象。如果沒有有效引用指向該對象(基本意味著不存在訪問該對象的方式),那么該對象就是可回收的。這里的有效引用 并不包括弱引用。也就是說,雖然弱引用可以用來訪問對象,但進行垃圾回收時弱引用并不會被考慮在內,僅有弱引用指向的對象仍然會被GC回收。

    WeakHashMap 內部是通過弱引用來管理entry的,弱引用的特性對應到 WeakHashMap 上意味著什么呢?

    WeakHashMap 里的entry可能會被GC自動刪除,即使程序員沒有調用remove()或者clear()方法。

    WeakHashMap 的這個特點特別適用于需要緩存場景。在緩存場景下,由于內存是有限的,不能緩存所有對象;對象緩存命中可以提高系統(tǒng)效率,但緩存MISS也不會造成錯誤,因為可以通過計算重新得到。

    如若轉載,請注明出處:開源字節(jié) https://sourcebyte.cn/article/164.html

    鄭重聲明:本文內容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權歸原作者所有,如有侵權請聯(lián)系管理員(admin#wlmqw.com)刪除。
    (0)
    用戶投稿
    上一篇 2022年6月19日 18:12
    下一篇 2022年6月19日 18:13

    相關推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時間:周一至周五,10:30-18:30,節(jié)假日休息