<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ### JAVA引用分類 * 強引用\(StrongReference\):強引用是使用最普遍的引用。如果一個對象具有強引用,那垃圾回收器絕不會回收它 * 軟引用\(SoftReference\):軟引用的特點是內存足夠的時候,gc的時候不會回收它,只有內存不足的時候才會回收軟引用的對象 * 弱引用\(WeakReference\):在垃圾回收器掃描的時候,發現弱引用會把它放到ReferenceQueue中,等下次gc的時候會回收它 系統為我們提供了WeakHashMap,和HashMap類似,只是其key使用了weak reference。如果WeakHashMap的某個key被垃圾回收器回收,那么entity也會自動被remove * 虛引用\(PhantomReference\):虛引用顧名思義,就是形同虛設,與其他幾種引用都不同,虛引用并不會決定對象的生命周期。如果一個對象僅持有虛引用,那么它就和沒有任何引用一樣,在任何時候都可能被垃圾回收器回收。虛引用主要用來跟蹤對象被垃圾回收器回收的活動;虛引用與軟引用和弱引用的一個區別在于:虛引用必須和引用隊列ReferenceQueue聯合使用。當垃圾回收器準備回收一個對象時,如果發現它還有虛引用,就會在回收對象的內存之前,把這個虛引用加入到與之關聯的引用隊列中; ![](../assets/20180622174848001.png) **SoftReference**\(軟引用\) 軟引用是主要用于內存敏感的高速緩存。在jvm報告內存不足之前會清除所有的軟引用,這樣以來gc就有可能收集軟可及的對象,可能解決內存吃緊問題,避免內存溢出。什么時候會被收集取決于gc的算法和gc運行時可用內存的大小。當gc決定要收集軟引用是執行以下過程,以上面的abcSoftRef為例: * 首先將abcSoftRef的referent設置為null,不再引用heap中的new String\("abc"\)對象。 * 將heap中的new String\("abc"\)對象設置為可結束的\(finalizable\)。 * 當heap中的new String\("abc"\)對象的finalize\(\)方法被運行而且該對象占用的內存被釋放, abcSoftRef被添加到它的ReferenceQueue中。 注:對ReferenceQueue軟引用和弱引用可以有可無,但是虛引用必須有 ``` String abc=new String("abc"); //1 SoftReference<String> abcSoftRef=new SoftReference<String>(abc); //2 WeakReference<String> abcWeakRef = new WeakReference<String>(abc); //3 abc=null; //4 abcSoftRef.clear();//5 ``` ![](../assets/20180622175353001.png) 【知識總結】 * 當一個對象僅僅被weak reference指向, 而沒有任何其他strong reference指向的時候, 如果GC運行, 那么這個對象就會被回收 * 要使用這些特殊的引用類,就不能保留對對象的強引用,如果保留了對對象的強引用,就會浪費這些引用類所提供的任何好處
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看