Java中Heap(堆)和Stack(栈)

来源:互联网 发布:苹果8plus没网络 编辑:程序博客网 时间:2024/05/20 19:31

Heap(堆)

1>Heap是Stack的子集。

2>Heap是运行时可动态分配的数据区,从速度看比Stack慢,Heap里面的数据不共享,大小和生存期都可以在运行时再确定。

3>new关键字 是运行时在Heap里面创建对象。每new一次都一定会创建新对象,因为堆数据不共享。

Stack(栈)

 Stack存取速度仅次于寄存器,Stack里面的数据可共享,但是其中数据的大小和生存期必须在运行前确定。


例子:

String str1= new String("abc");
String str2= "abc";
str1是在Heap里面创建的对象。
str2是指向Stack里面值为“abc”的引用变量,首先会创建引用变量str2, 再查找Stack里面有没有“abc”,有则将 str2指向 “abc”,没有则在Stack里面创建一个“abc”,再将str2指向“abc”。

0 0