1.寄存器
這是最快的存儲區,因為它位于處理器內部,數量極其有限,所以寄存器根據需求進行分配,你不能直接控制,也不能在程序中感 覺到寄存器存在的任何跡象。
2.堆棧
位于通用RAM(隨機訪問存儲器)中,但通過堆棧指針可以直接從處理器那里得到支持,堆棧指針若向下移動,則分配新的內存,若向上移動,則釋放那些內存。這是一種快速有效的分配存儲方法,僅次于寄存器。創建程序時,JAVA系統必須知道存儲在堆棧內所有項的確切生命周期,以便上下移動堆棧指針。這一約束限制了程序的靈活性。
3.堆
一種通用的內存池(也位于RAM)中,用于存放所有JAVA對象。堆不同于堆棧的地方是:堆不需要知道存儲的數據在堆里存活多長時間。因些,在堆里分配存儲空間有很大的靈活性。當需要一個對象時,只需要用NEW寫一行簡單的代碼,當執行這行代碼時,會自動在堆里進行存儲分配。缺點是用堆進行存儲分配和清理要比用堆棧更耗時。
4.常量存儲
常量值一般直接放于程序內部,這樣做是安全的,因為它們永遠不可能改變。如果是嵌入式,可能常量本身會和程序分開,放在ROM中。
5.非RAM存儲
如果數據完全存活于程序之外,那么它可以不受任何程序的影響。比如流對象和持久化對象。