java中栈内存和堆内存

内存结构:

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

java中栈内存和堆内存_第1张图片

下面是一个数组的栈内存和堆内存的操作:

步骤:

1、数组名x,不占用内存,存放在栈内存中,new 建立的实例都存放在堆内存中

2、在堆内存中给数组分配三个空间【0】、【1】、【2】;

3、分配的三个内存空间,每一个实体都有内存地址,不妨假设【0】的内存地址是0x0088;

4、栈内存中的数组名x是通过把堆内存中的【0】地址传给数组名x,然后x就可以指向堆内存中的数组;

5、指向堆内存中的第一个元素的地址,通过x[0]来访问第一个元素存放的数组值。

6、然后依次访问数组中各个元素。

java中栈内存和堆内存_第2张图片


你可能感兴趣的:(java,内存)