浏览 4532 次
锁定老帖子 主题:Java中Heap与Stack的区别
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-10-13
最后修改:2011-06-19
1) Heap是 Stack的一个子集。
2) Stack存取速度仅次于寄存器,Stack里面的数据可共享,但是其中数据的大小和生存期必须在运行前确定。
3) Heap是运行时可动态分配的数据区,从速度看比Stack慢,Heap里面的数据不共享,大小和生存期都可以在运行时再确定。
4) new关键字 是运行时在Heap里面创建对象。每new一次都一定会创建新对象,因为堆数据不共享。 Eg: String str1= new String("abc"); (1) String str2= "abc"; (2) str1是在Heap里面创建的对象。 str2是指向Stack里面值为“abc”的引用变量,语句(2)的执行,首先会创建引用变量str2, 再查找Stack里面有没有“abc”,有则将 str2指向 “abc”,没有则在Stack里面创建一个“abc”,再将str2指向“abc”。
相关链接:
全球软件项目外包平台 兼职做外包 挣Money! ★ 【下载】经典常用算法 Java和C语言两种实现(含代码图例) 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-10-13
|
|
返回顶楼 | |
发表时间:2009-10-13
不错,是目前见到的比较详细的new和""在堆栈层面的解释了,感谢分享。。。
|
|
返回顶楼 | |
发表时间:2009-11-05
胡说八道...
|
|
返回顶楼 | |
发表时间:2009-11-05
String str1= new String("abc");
2个对象,一个在池中,一个在HEAP中 String str2= "abc"; 一个对象,只是在String pool中 |
|
返回顶楼 | |