内存结构:
java程序在运行时,需要在内存中分配空间。为了提高运算效率,又对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方法。
1、栈内存
用于存储局部变量,当数据使用完,所占空间会自动释放。
2、堆内存
1、数组和对象,通过new 建立的实例都存放在堆内存中。
2、每一个实体都有内存地址。
3、实体中的变量都有默认初始化值。
4、实体不在被使用,会在不确定的时间内被垃圾回收器回收。
下面是一个栈内存操作:
步骤:
1、先给x 分配一个内存空间,并赋值为1;
2、然后给y分配一个内存空间,并把x的值赋给y,y的值为1;
3、然后再给y赋值为2,同时y=1,被释放掉;
4、但x的值从头到尾就没有变化过,故x的值还是为1
下面是一个数组的栈内存和堆内存的操作:
步骤:
1、数组名x,不占用内存,存放在栈内存中,new 建立的实例都存放在堆内存中
2、在堆内存中给数组分配三个空间【0】、【1】、【2】;
3、分配的三个内存空间,每一个实体都有内存地址,不妨假设【0】的内存地址是0x0088;
4、栈内存中的数组名x是通过把堆内存中的【0】地址传给数组名x,然后x就可以指向堆内存中的数组;
5、指向堆内存中的第一个元素的地址,通过x[0]来访问第一个元素存放的数组值。
6、然后依次访问数组中各个元素。