堆和栈

来源:互联网 发布:麦多商城系统源码 编辑:程序博客网 时间:2024/04/27 23:34

堆和栈都是Java用来在内存中存放数据的地方。

类的实例化对象都是在堆上分配内存空间的,通过new指令实现。

String str = new String( "abc" );

Java中,堆的释放是由垃圾回收机制来负责处理。垃圾收集器会自动回收不再使用的内存空间。

在运行时,堆是动态分配内存空间的,所以内存存取速度比较慢。


栈中主要存放一些基本数据类型。

栈有一个特性,就是“数据共享”。

比如定义两个变量:

int a = 5;int b = 5;

JVM处理int a = 5时,首先在栈上创建一个变量为a的引用,然后去查找栈上是否还有5这个值,如果没有找到,那么就将5存放进来,然后将a指向5.

接着处理int b = 5,在创建完b的引用后,因为在栈中已经有5这个值,便将b直接指向5。于是就出现了a,b同时指向5的内存地址。