java記憶體配置,java分配

來源:互聯網
上載者:User

java記憶體配置,java分配

棧中存基本型的局部變數資料和對象的引用。
一般Java在記憶體配置時會涉及到以下地區:
  ◆寄存器:我們在程式中無法控制
  ◆棧:存放基本類型的資料和對象的引用,但對象本身不存放在棧中,而是存放在堆中(new 出來的對象)
  ◆堆:存放用new產生的資料
  ◆靜態域:存放在對象中用static定義的靜態成員
  ◆常量池:存放常量
  ◆非RAM儲存:硬碟等永久儲存空間

棧:方法中定義的一些基本類型的變數資料和對象(和形式參數)的引用變數都在棧記憶體中分配,棧記憶體中的局部變數隨著方法的消失而消失。存在棧中的資料可以共用

堆:存放由new建立的對象和數組,由GC管理。棧中定義引用變數,其取值等於數組或對象在堆記憶體中的首地址。引用變數在程式運行到其範圍之外後被釋放。而數組和對象不會,他們只有在沒有引用變數指向它的時候才會被GC在適當時機回收。

class BirthDate {      private int day;      private int month;      private int year;          public BirthDate(int d, int m, int y) {          day = d;           month = m;           year = y;      }  }    public class Test{      public static void main(String args[]){  int date = 9;          Test test = new Test();                test.change(date);           BirthDate d1= new BirthDate(7,7,1970);             }          public void change1(int i){          i = 1234;      }}

下面分析一下代碼執行時候的變化:
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()將等待記憶體回收。

常量池:常量池指在編譯期被確定,並被儲存在已編譯的.class檔案中的資料。
除了包含代碼中所定義的各種基本類型和對象型的常量值(final)還包含一些以文本形式出現的符號引用,比如:
  ◆類和介面的全限定名;
  ◆欄位的名稱和描述符;
  ◆方法的名稱和描述符;
String類型在編譯期已經建立好(直接用雙引號定義的)的就儲存在常量池中,如果是運行期(new出來的)才能確定的就儲存在堆中。

參考:http://blog.csdn.net/truelove12358/article/details/38139843

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.