Java中的內存分配

jopen 11年前發布 | 19K 次閱讀 Java Java開發

摘要 Java和C一樣,內存中有堆和棧及其他,今天直說堆和棧

    今天舉例說一下Java中的堆和棧。

    1、基本類型

int a = 1;

    對于以上變量a,是在棧中存放的。    

    2、 對象    

A a = new A();

   其中,引用a是在棧里存放的,對象A()是在堆里存放的。

    3、數組

int[] a = new int[4];
a[0] = 1;
a[1] = 2;
a[3] = 3;
a[4] = 4;

   數組的內存分配如下圖所示,引用a是在棧中,數組對象在堆中。

    Java中的內存分配

    4、函數一

void test() {
    int[] a = new int[4];
    a[0] = 1;
    a[1] = 2;
    a[3] = 3;
    a[4] = 4;
    
    change(a);
}

void change(int[] a) {
    a[0] = 10;
}

  內存情況如圖:

    Java中的內存分配

    5、函數二

void test() {
    int[] a = new int[4];
    a[0] = 1;
    a[1] = 2;
    a[3] = 3;
    a[4] = 4;
    
    change(a);
}

void change(int[] a) {
    a = new int[4];
    a[0] = 7;
    a[1] = 8;
    a[2] = 9;
    a[3] = 10;
}

    內存情況如下圖:

    Java中的內存分配

 

 

 

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!