Java中的内存分配
jopen
11年前
摘要 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是在栈中,数组对象在堆中。
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; }
内存情况如图:
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; }
内存情况如下图: