1. 程式人生 > >程式執行過程中堆記憶體的簡單分析

程式執行過程中堆記憶體的簡單分析

JAVA語言中除基本型別之外的變數型別,都稱之為引用型別。
JAVA中物件是通過引用reference對其操作的。

新建物件時,引用型別的資料都是null,基本資料型別 int 是 0  string 是null boolean 是false  (預設初始化)

方法:引數傳遞的值是 值傳遞。

區域性變數 必須初始化,成員變數會被系統預設初始化。

棧:自動分配連續的空間,後進先出,一般用來放置區域性變數,資料使用完畢之後,會自動釋放

堆:不連續,用來放置 new出來的物件,堆中的資料都會有預設初始化值。引用型別的資料都是null,基本資料型別 int 是 0  string 是null boolean 是false  (預設初始化)


方法區:屬於堆的一部分,存放類的資訊(程式碼)、static變數、常量池(字串常量)等

解析:
1、主函式中定義一個  int  x=3;
主函式載入時,主函式就在記憶體中的棧中 開闢一個空間,此空間中就會定義一個變數 ,並且賦值為3.

2、主函式中建立一個 int[] x=new int[3];

左邊 int[] x,在棧記憶體中定義了一個變數 x,
 
new int[3],在堆記憶體中開闢了一個空間,每個在堆記憶體中存在的資料都會有一個地址值。

= 時,就將x的引用指向了new 物件在堆記憶體中的地址值。


注:操作物件就是操作地址。
例子:
//通過類載入器 Class LOader載入Student類,載入後,在方法區中就有了Student中的類的資訊
Student s1=new Student();
s1.name="張三";