Thinking In Java Part02_01(對象)

1、存儲位置	
	1.1、寄存器:最快的存儲區,因爲它位於不同於其他存儲區的地方——處理器內部,但是寄存器的數量極其有限,所以寄存器根據需求進行分配。你不能直接控制,也不能在程序中感覺到寄存器存在的任何跡象(另一方面,C和C++允許向編譯器建議寄存器的分配方式)
	1.2、堆棧。位於通用RAM(隨機訪問存儲器)中,但通過堆棧指針可以從處理器那裏獲得直接支持。堆棧指針若向下移動,則分配新的內存;若向上移動,則釋放那些內存。這是一種快速有效的分配存儲方法,僅次於寄存器。創建程序時,Java系統必須知道存儲在堆棧內所有項的確切生命週期 ,以便上下移動堆棧指針。這一約束了程序的靈活性,所以雖然某些Java數據存儲於堆棧中——特別是對象引用,但是Java對象並不存儲於其中。
	1.3、堆:一種通用的內存池(也位於RAM區),用於存放所有的Java對象。堆不同於堆棧的好處是:編譯器不需要知道存儲的數據在堆裏存活多長時間。因此,在 堆裏分配存儲有很大的靈活性。當需要一個對象時,只需用new寫一行簡單的代碼,當執行這行代碼時,會自動在堆裏進行存儲分配。當然,爲這種靈活性必須要付出對應的代價:用堆進行存儲分配和清理可能比用堆棧進行存儲分配需要更多的時間。
	1.4、常量存儲。常量值通常直接存放在程序代碼的內部,這樣做安全,因爲它們永遠不會被改變。有時,在嵌入式系統中,常量本身會和其他部分隔離開,所以在這種情況下,可以選擇將其存放在ROM(只讀存儲器)中【這種存儲區的一個例子是字符串池,所有字面常量字符串和具有字符串值的常量表達式都自動是內存限定的,並且會置於特殊的靜態存儲區中】。
	1.5、非RAM存儲。如果數據完全存活於程序之外,那麼它可以不受程序的任何控制,在程序沒有運行時也可以存在。2個基本的例子爲流對象和持久化對象。在流對象中,對象轉化成字節流,通常被髮送給另一臺及其。在“持久化對象”中,對象被存放於磁盤上,因此,即使程序終止,它們仍可以保持自己的狀態。這種存儲方式的技巧在於:把對象轉化成可以存放在其他媒介上的事物,在需要時,可恢復成常規的、基於RAM的對象。Java提供了毒地輕量級持久化的支持,而諸如JDBC和Hibernate這樣的機制提供了更加複雜的對在數據庫中存儲和讀取對象信息的支持。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章