Java中Heap与Stack的区别


   作者蓝石榴    由lan16转载自蓝石榴    更新于2014-10-02 22:16    已被浏览775次

1.Heap是 Stack的一个子集。
2.Stack存取速度仅次于寄存器,Stack里面的数据可共享,但是其中数据的大小和生存期必须在运行前确定。
3.Heap是运行时可动态分配的数据区,从速度看比Stack慢,Heap里面的数据不共享,大小和生存期都可以在运行时再确定。
4.new关键字 是运行时在Heap里面创建对象。每new一次都一定会创建新对象,因为堆数据不共享。
 ♦ String str1= new String("xyz"); (1)
 ♦ String str2= "xyz"; (2)
 ♦ str1是在Heap里面创建的对象。str2是指向Stack里面值为"xyz"的引用变量,语句(2)的执行,首先会创建引用变量str2, 再查找
 Stack里面有没有"xyz",有则将 str2指向"xyz",没有则在Stack里面创建一个"xyz",再将str2指向"xyz"。

豫ICP备13022176号-2   鄂公网安备 42010602000416号   Copyright © 2013 - 2020 蓝石榴. All Rights Reserved  联系我 联系我 蓝石榴技术社区