论坛首页 Java企业应用论坛

Java中Heap与Stack的区别

浏览 4506 次
精华帖 (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”。

 

 

相关链接:

★  Java知识点汇总 

全球软件项目外包平台 兼职做外包 挣Money!

 

 

★ 【下载】经典常用算法 Java和C语言两种实现(含代码图例)

【下载】Java各种排序算法实现(含代码)

   发表时间:2009-10-13  
0 请登录后投票
   发表时间:2009-10-13  
不错,是目前见到的比较详细的new和""在堆栈层面的解释了,感谢分享。。。
0 请登录后投票
   发表时间:2009-11-05  
胡说八道...
0 请登录后投票
   发表时间:2009-11-05  
   String str1= new String("abc"); 
2个对象,一个在池中,一个在HEAP中
   String str2= "abc";             
一个对象,只是在String pool中
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics