1. 程式人生 > >java new 關鍵字到底做了什麼?

java new 關鍵字到底做了什麼?

參考《Java虛擬機器規範(第7版)》的描述,JVM包含三種引用型別,分別是型別 (class type),陣列型別(array type)和介面型別(interface type),這些引用型別的值則分別 由類例項、陣列例項以及實現了某個介面的派生類例項負責動態建立,那麼JVM中究 竟是如何為這些型別建立對應的物件例項呢?-------------如果是在Java語法層面上建立 一個物件,無非就是使用一個簡單的new關鍵字即可,但是在JVM中就沒有那麼簡 單了,其實牽扯到細節的實現相當複雜,而且過程繁多。簡單地說,當Java語法層面 使用new關鍵字建立一個Java物件時,JVM首先會檢查這個new指令的引數能否在常 量池中定位到一個類的符號引用,然後檢查與這個符號引用相對應的類是否已經成功經 歷載入、解析和初始化等步驟,當類完成裝載步驟之後,就已經完全確定出建立物件實 例時所需的記憶體空間大小,接下來JVM將會對其進行記憶體分配,以儲存所生成的物件 例項。如下圖所示: