一、強引用
我們平時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快速入門
#以上是關於java中的強引用與弱引用的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!