1. 程式人生 > >java中強、軟、弱和虛引用應用

java中強、軟、弱和虛引用應用

   首先,我們看一個僱員資訊查詢系統的例項。我們將使用一個Java語言實現的僱員資訊查詢系統查詢儲存在磁碟檔案或者資料庫中的僱員人事檔案資訊。作為一個使用者,我們完全有可能需要回頭去檢視幾分鐘甚至幾秒鐘前檢視過的僱員檔案資訊(同樣,我們在瀏覽WEB頁面的時候也經常會使用“後退”按鈕)。這時我們通常會有兩種程式實現方式:一種是把過去檢視過的僱員資訊儲存在記憶體中,每一個儲存了僱員檔案資訊的Java物件的生命週期貫穿整個應用程式始終;另一種是當用戶開始檢視其他僱員的檔案資訊的時候,把儲存了當前所檢視的僱員檔案資訊的Java物件結束引用,使得垃圾收集執行緒可以回收其所佔用的記憶體空間,當用戶再次需要瀏覽該僱員的檔案資訊的時候,重新構建該僱員的資訊。很顯然,第一種實現方法將造成大量的記憶體浪費,而第二種實現的缺陷在於即使垃圾收集執行緒還沒有進行垃圾收集,包含僱員檔案資訊的物件仍然完好地儲存在記憶體中,應用程式也要重新構建一個物件。我們知道,訪問磁碟檔案、訪問網路資源、查詢資料庫等操作都是影響應用程式執行效能的重要因素,如果能重新獲取那些尚未被回收的
Java物件的引用,必將減少不必要的訪問,大大提高程式的執行速度。

相關推薦

java引用應用

   首先,我們看一個僱員資訊查詢系統的例項。我們將使用一個Java語言實現的僱員資訊查詢系統查詢儲存在磁碟檔案或者資料庫中的僱員人事檔案資訊。作為一個使用者,我們完全有可能需要回頭去檢視幾分鐘甚至幾秒鐘前檢視過的僱員檔案資訊(同樣,我們在瀏覽WEB頁面的時候也經常會使用“後退”按鈕)。這時我們通常會有兩種程

java引用(及利用引用實現快取記憶體)

在java中引用的型別一共有四種,分別是:強引用,軟引用,弱引用和虛引用。 那麼他們各自的定義是什麼呢? 1.強引用(StrongReference): 強引用是使用最普通的應用。如果一個物件具有強引用,那麼gc絕不會回收它。當記憶體空間不足,java虛擬

Java物件的引用原理+結合ReferenceQueue物件構造Java物件的快取記憶體器

轉自:http://blog.csdn.net/lyfi01/article/details/6415726 1.Java物件的強、軟、弱和虛引用 在JDK 1.2以前的版本中,若一個物件不被任何變數引用,那麼程式就無法再使用這個物件。也就是說,只有物件處於可觸及(re

Java引用及GC Root——記憶體優化(一)

你也可以檢視我的其他同類文章,也會讓你有一定的收貨! 記憶體優化 記憶體優化的兩個主要方向: 記憶體洩露:已經沒有使用的物件,GC Root 還對其保持強引用,導致GC無法回收。 記憶體抖動:頻繁的建立物件,導致 GC 頻率較高,導致應用的卡頓

Java物件的引用

⑴強引用(StrongReference) 強引用是使用最普遍的引用。如果一個物件具有強引用,那垃圾回收器絕不會回收它。當記憶體空間不足,Java虛擬機器寧願丟擲OutOfMemoryError錯誤,使程式異常終止,也不會靠隨意回收具有強引用的物件來解決記憶體不足的問題。

詳解Java物件的引用的區別

你知道Java中引用有幾種寫法嗎?逃~     對於大部分的物件而言,程式裡會有一個引用變數來引用該物件,這是最常見的引用方法。除此之外,java.lang.ref包下還提供了3個類:SoftReference、WeakReference和PhantomRe

java接口(interface)基類(abstract class)的區別

private 特定 知識庫 價值 ceo 實現 相互 定義 協調 在Java語言中,abstract class和interface是支持抽象類定義的兩種機制。正是由於這兩種機制的存在,才賦予了Java強大的面向對象能力。abstract class和interface之

Java引用引用引用引用及其例項

在《深入理解Java虛擬機器(第二版)》3.2.3節:再談引用 中,介紹了Java中的幾種引用: 在JDK 1.2以前,Java中的引用的定義很傳統:如果reference型別的資料中儲存的數值代表的是另外一塊記憶體的起始地址,就稱這塊記憶體代表著一

Java基礎篇 - 引用引用引用引用

splay 查看 tla 之前 for 應用 幹貨 程序 策略 前言 Java執行GC判斷對象是否存活有兩種方式其中一種是引用計數。 引用計數:Java堆中每一個對象都有一個引用計數屬性,引用每新增1次計數加1,引用每釋放1次計數減1。 在JDK 1.2以前的版本中,若

Java的四種引用型別(

為什麼需要不同的引用型別 從Java1.2開始,JVM開發團隊發現,單一的強引用型別,無法很好的管理物件在JVM裡面的生命週期,垃圾回收策略過於簡單,無法適用絕大多數場景。為了更好的管理物件的記憶體,更好的進行垃圾回收,JVM團隊擴充套件了引用型別,從最早的強引用型別增加到強、軟、弱、虛四個引用

java引用引用應用引用

虛引用:“虛引用”顧名思義,就是形同虛設,與其他幾種引用都不同,虛引用並不會決定物件的生命週期。如果一個物件 僅持有虛引用,那麼它就和沒有任何引用一樣,在任何時候都可能被垃圾回收。 虛引用主要用來跟蹤物件被垃圾回收的活動。虛引用與軟引用和弱引用的一個區別在於:虛引用必須和引用佇列 (ReferenceQue

Java引用型別有哪幾種:引用引用引用引用

Java雖然有記憶體管理機制,但仍應該警惕記憶體洩露的問題。例如物件池、快取中的過期物件都有可能引發記憶體洩露的問題。 從JDK1.2版本開始,加入了物件的幾種引用級別,從而使程式能夠更好的控制物件的生命週期,幫助開發者能夠更好的緩解和處理記憶體洩露的問題。 這幾種

Java四種引用

1. 強引用(StrongReference)  強引用是使用最普遍的引用。如果一個物件具有強引用,那垃圾回收器絕不會回收它。當記憶體空間不足,Java虛擬機器寧願丟擲OutOfMemoryError錯誤,使程式異常終止,也不會靠隨意回收具有強引用的物件來解決記憶體不足的問題。 2. 軟引用(SoftR

java的四種引用

強引用:例如: Student stu = new Student();  只要有強引用存在,關聯的物件就不會被垃圾回收機制回收。 軟引用:在系統要發生記憶體溢位前,軟引用關聯的物件會被垃圾回收機制回收。 弱引用:被若引用關聯的物件,下次垃圾回收機制執行的時候,會被回收掉。

android四大引用的區別,引用引用引用引用

強引用:使用的內容不可被回收,直到出現out of memory錯誤,android中沒有任何關鍵字指定這種強引用。 軟引用:         如果一個物件只具有軟引用,那麼如果記憶體空間足夠,垃圾回收器就不會回收它;如果記憶體空間不足了,就會回收這些物件的記憶體。只要垃圾

java四種引用

           在JDK 1.2以前的版本中,物件處於可觸及(reachable)狀態,程式才能使用它。物件的引用分為4種級別由高到低依次為:強引用、軟引用、弱引用、虛引用。 1、強引用(

Java引用引用引用引用

從JDK1.2版本開始,把物件的引用分為四種級別,從而使程式能更加靈活的控制物件的生命週期。這四種級別由高到低依次為:強引用、軟引用、弱引用和虛引用。 一、強引用 如果一個物件具有強引用,那就類似於必不可少的生活用品,垃圾回收器絕不會回收它。當記憶體空 間不足,Java虛

Java四種引用---的知識點總結

前言 1.本文屬於知識點總結篇,基本內容以概念+原始碼分析+流程圖為主. 2.本文大多數概念,屬於站在巨人肩膀上整合而成,為了自己更好的複習和大眾對於這塊知識的瞭解. 3.本人學識尚淺,對於文章中如果有描述有誤的地方,還請大家及時通知,然後博主及時

Java的內存處理機制finalstaticfinal static總結

stat 入口 引用類型 堆棧 class a 如果 虛擬 不同 bsp Java中的內存處理機制和final、static、final static總結 裝載自:http://blog.csdn.net/wqthaha/article/details/209235

Java集合類setListmap的遍歷方式

Java中集合類的遍歷方式 Java中集合分為set、List和map。 1.set集合 set集合常用的有兩種遍歷方式: Set<String>  set = new HashSet<String>(); 第一種利用for迴圈: for(S