JAVA基礎(二)

對象的存儲:

計算機中有五個不同的地方可以存儲數據:

1)寄存器。

這是最快的存儲區,因爲它位於不同於其他存儲區的地方-處理器內部。但是寄存器數量及其有限,所以,寄存器根據需求進行分配。你不能直接控制,也不能在程序中感覺到寄存器存在的任何跡象。

2)堆棧。

位於通用RAM(隨機訪問存儲器)中,但通過堆棧指針可以從處理器那裏獲得直接支持。堆棧指針若向下移動,則分配新的內存;若向上移動,則釋放那些內存。這是一種快速有效的分配存儲方法,僅次於寄存器。創建程序時,Java系統必須知道存儲在堆棧內所有項的確切生命週期,以便上下移動堆棧指針。這一約束限制了程序的靈活性,所以雖然某些java數據存儲在堆棧中–特別是對象的引用,但是java對象並不存儲在其中。

3)堆。

一種通用的內存池(也位於RAM區),用於存放所有的Java對象。堆不同於堆棧的好處是:編譯器不需要知道存儲的數據在堆裏存活多長時間。因此,在堆裏分配存儲有很大的靈活性。當需要一個對象時,只需用new寫一行簡單的代碼,當執行這行代碼是,會自動在堆裏進行存儲分配。當然,爲這種靈活性必須付出相應的代價:用堆進行存儲分配和清理可能比用堆棧進行需要更多的時間。

4)常量存儲。

常量值通常直接存放在程序代碼內部,這樣做是安全的,因爲它們永遠不會被改變。

5)非RAM存儲。

如果數據完全存活於程序之外,那麼它可以不受程序的任何控制,在程序沒有運行時也可以存在。其中有兩個基本的例子是流對象和持久化對象。在流對象中,對象轉化成字節流,通常被髮送給另一臺機器。在持久化對象中,對象被存放在磁盤上,因此,即使程序終止,它們仍然可以保持自己的狀態。這種存儲方式的技巧在於:把對象轉化爲可以存放在其他媒介的事務,在需要時可以恢復成常規的,基於RAM的對象。

發佈了53 篇原創文章 · 獲贊 114 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章