1、編譯java程式取得MainApp.class檔案後,在命令列敲擊java AppMain。該系統將啟動jvm過程。 jvm程序將從classpath路徑中找到一個稱為蘋果手機的二進位文件,並將蘋果手機的類別資訊載入到運行時資料區域的方法區域。這個過程叫做蘋果手機的載入。
2、JVM找到AppMain的主函數入口,開始執行main函數。
main函數的第一個指令是Animalanimal=newAnimal(“Puppy”)讓JVM製作Animal對象,但此時方法區域沒有Animal類別的訊息,JVM立即載入Animal類,將Animal類別的類型資訊放入方法區。
3、載入Animal類別後,Java虛擬機首先在堆積區分配新的Animal實例內存,呼叫結構函數初始化Animal實例,該Animal實例具有指向方法區域的Animal類型資訊(包括方法表、 java動態綁定的基礎實作)
4、使用animal.printName()時,JVM根據animal引用找到animal對象,根據animal物件所持有的參考定位在方法區域的animal類型資訊的方法表中,取得printName()函數字節碼的位址。
5、開始執行printName()函數。
拓展:
執行說明
#編譯後的位元組程式碼檔案格式主要分為常數池和方法位元組程式碼兩部分。常數池記錄了程式碼出現的token(類別名稱、成員變數名稱等)和符號參考(方法參考、成員變數參考等)的方法的打工程式碼放置在類別中各種方法的打工程式碼中。
以上是java程式編好如何運作的詳細內容。更多資訊請關注PHP中文網其他相關文章!