1. 程式人生 > >java儲存機制

java儲存機制

儲存位置介紹:

1、堆:new出來的物件。

2、棧:基本型別的變數資料、物件的引用。

3、靜態域:存放靜態成員(static定義)。

4、暫存器:最快的儲存區,由編譯器分配,程式無法控制。

5、常量池:存放字串常量和基本型別常量(static final)。

 

 

例項介紹:

對於以上這段程式碼,date為區域性變數,i,d,m,y都是形參為區域性變數,day,month,year為成員變數。下面分析一下程式碼執行時候的變化: 
1. main方法開始執行:int date = 9; 
date區域性變數,基礎型別,引用和值都存在棧中。 
2. Test test = new Test(); 


test為物件引用,存在棧中,物件(new Test())存在堆中。 
3. test.change(date); 
i為區域性變數,引用和值存在棧中。當方法change執行完成後,i就會從棧中消失。 
4. BirthDate d1= new BirthDate(7,7,1970);  
d1 為物件引用,存在棧中,物件(new BirthDate())存在堆中,其中d,m,y為區域性變數儲存在棧中,且它們的型別為基礎型別,因此它們的資料也儲存在棧中。 day,month,year為成員變數,它們儲存在堆中(new BirthDate()裡面)。當BirthDate構造方法執行完之後,d,m,y將從棧中消失。 
5.main方法執行完之後,date變數,test,d1引用將從棧中消失,new Test(),new BirthDate()將等待垃圾回收。

 

內容來自:https://www.cnblogs.com/lxp503238/p/7007126.html