1. 程式人生 > >java程式執行過程

java程式執行過程

 

Java User

java是JVM,執行java後就準備好了程式碼區,靜態區,棧區,堆區。

執行User時現在程式碼區找看有沒有User.class,如果沒有就在環境裡找classpath環境變數,classpath裡面有很多路徑,逐一在每個路徑下找該User.class位元組碼(在硬碟上找),如果沒找到就報類沒找到的錯誤,

如果找到了就把位元組碼加到程式碼區,同時生成反射類(反射類可以瞭解到該類的資訊)。

   位元組碼載入的過程中要對位元組碼進行掃描(三層安全掃描),看是否有非法的資料程式碼,但是java程式碼不可能有非法的資料程式碼,要是有就根本載入不到JVM裡面來,在掃描的過程中就會發現該位元組碼裡面定義了什麼。只要發現static,不管方法還是屬性,只要前面有static,就把該方法或屬性載入到靜態區(即把程式碼存到靜態區裡),

載入到靜態區後分配記憶體。

只要進塊(‘{’),就要在記憶體裡開闢一塊棧楨,遇到(‘}’)就出棧。

 

簡單的說就是:

       程式碼區存放類;

       靜態區存放靜態的屬性和靜態的方法,直接分配記憶體;

       棧區存放變數;

       堆區在例項化類後即new該類後,存放該類的建構函式,非靜態方法;