java基礎:記憶體分配機制

十五樓亮哥發表於2015-01-30

         在任何程式語言中,無論是基本型別還是引用型別,不論其作用域如何,都必須為其分配一定的記憶體空間,Java 語言也不例外

           Java 的資料型別可以分為兩種:基本型別(變數持有資料本身的值)和引用型別(是某個物件的引用,而並非是物件本身);

           基本型別包括:boolean、float、double、int、long、short、byte以及char;在Java程式語言中除基本型別以外其餘都是引用型別如:類型別、陣列型別等。

        在計算機記憶體中主要來自四個地方:heap segment(堆區)、stack segment(棧區)、codesegment(程式碼區)、data segment(資料區);不同的地方存放不同資料:其中堆區主要存放Java程式執行時建立的所有引用型別都放在其中;棧區主要存放Java程式執行時所需的區域性變數、方法的引數、物件的引用以及中間運算結果等資料;程式碼區主要存放Java的程式碼;資料區主要存放靜態變數及全域性變數;以下結合例項來探討其具體機制。



舉個例子:

public class Student {
	private String name;
	private int age;
	public Student(String name,int age){
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	

}

public class Test {
	static int i = 10;
	public static void main(String[] args) {
		Student s1 = new Student("feng", 21);
	}
}


                           當該程式執行起來後,其計算機記憶體分佈大致如下:


 

相關文章