深入分析 Hello World 程式

iskeqi發表於2018-05-19

深入分析 Hello World 程式

public class HelloWorld{
	public static void main(String[] args){
		String s = "Hello World";
		System.out.println("s = "+s);
	}
}
複製程式碼

整個程式的執行流程?

  1. 編譯器將 HelloWorld.java 原始檔編譯成位元組碼檔案 HelloWorld.class ,再由 JVM 將 HelloWord 類載入到方法區的類程式碼記憶體區域。
  2. JVM 開始執行 main 方法,期間會載入 String[].class ,以及傳送一個 String 型別陣列 args[]
  3. 載入 String.class 到方法區,在棧記憶體區開闢 String 變數 s ,在方法區的常量區開闢 Hello World 物件。
  4. 載入 System.class 類,給 System.out 物件在堆區開闢空間,最後在方法區的常量記憶體空間構造一個新的字串物件 s = Hello World
  5. 最後呼叫 System.out 物件的 println 方法在控制檯中輸出字串。

記憶體分析模型圖

理解了記憶體就理解了一切,學會分析 Java 程式在記憶體中的分佈情況,才能寫出更好的程式。

深入分析 Hello World 程式

這個過程一共涉及到了些什麼?

  1. 原始檔: HelloWorld.java
  2. 類檔案:String.class 、 String[].class 、 System.class 、 HelloWorld.class
  3. 物件:“s = Hello World” 、 “Hello World” 、 String.out 、 String.in 、 String.error 、 args
  4. 方法:main() 、 toString() 、println()
  5. 變數:args 、 s