1. 程式人生 > >java程式執行的記憶體分配小記

java程式執行的記憶體分配小記

五個資料儲存區:

、暫存器:最快的儲存區,位於處理器內部,但是數量有限,需要根據需求進行分配,所以無法由程式直接控制。

、堆疊:位於通用RAM(隨機訪問儲存器)中,通過堆疊指標可以獲得直接支援,指標向下移動,即分配新的記憶體,指標向上移動,則釋放記憶體,速度僅次於暫存器,在建立程式時,java系統需要知道所有項的確切生命週期,以便於移動指標,靈活性低。存在堆疊中的資料主要有物件引用,但java物件並不存在堆疊中。

、堆:一種通用的記憶體池,也位於RAM區中,用於存放所有的java物件,不同於堆疊的是對於堆中資料編譯器無需知道資料在堆中的存活時間,靈活性高,需要一個物件時,只需要new一個物件即可,作為靈活性高的代價,堆中記憶體分配和清理的速度相比於堆疊中需要花費更多的時間。

、常量儲存:常量值通常放在程式內部,安全,

、非RAM儲存:資料完全獨立於程式之外,則不受程式任何控制,在程式未執行時也可以存在,比如流和持久化物件,在流中,通常將物件轉化為位元組流,傳送給另一臺機器。在持久化物件中,物件被存在磁碟上,所以,即便程式終止它也能保持自己的狀態,這種方式將物件轉化未儲存在其他媒介上的事物,在需要時可以將其恢復為常規物件。