java存儲: 1)寄存器:這是最快的存儲區,位於處理器的內部。但是寄存器的數量有限,所以寄存器根據需求進行分配。我們不能直接進行操作。 2)堆棧:位於通用RAM中,可以通過堆棧指針從處理器那裡獲取直接支持。堆棧指針往下移動,則分配新的記憶體。網上移動,則釋放記憶體。但是 在創建程式的時候必須知道存儲在 ...
java存儲:
1)寄存器:這是最快的存儲區,位於處理器的內部。但是寄存器的數量有限,所以寄存器根據需求進行分配。我們不能直接進行操作。
2)堆棧:位於通用RAM中,可以通過堆棧指針從處理器那裡獲取直接支持。堆棧指針往下移動,則分配新的記憶體。網上移動,則釋放記憶體。但是
在創建程式的時候必須知道存儲在堆棧中的所有項的具體生命周期,以便上下的移動指針。一般存儲基本類型和java對象引用。
3)堆:位於通用RAM中,存放所有的java對象,不需要知道具體的生命周期。
4)常量存儲:常量值通常直接存放在程式代碼內部。
5)非RAM存儲:數據完全存活於程式之外,可以不受程式的控制,在程式沒有運行時也可以存在。就是將對象轉化為可以存放在其他媒介上的事物。如:流對象、持久化對象
對象創建的流程:
1):即使沒有顯示的調用static,構造器實際上也是靜態方法。因此,當首次創建對象的時候或者首次調用靜態方法/靜態域時,java解釋器必須查找類路徑,定位class文件。
2):載入class文件,有關靜態的方法或者變數都會執行。因此,靜態初始化只會在類載入時被初始化一次。
3):使用new創建時,會先在堆上為對象分配足夠的存儲空間。
4):將這塊區域清零,這時,就自動的將對象中的基本成員變數或者引用進行預設的初始化。數字為零,引用為null。
5):執行所有出現於欄位定義處的初始化動作。
6):執行構造器。