Java中的内存分配

jopen 10年前

摘要 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中的内存分配