晋江企业网站建设/天津做优化好的公司
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和C语言两种实现(含代码图例)
分享到:
2009-10-13 08:53
浏览 7435
论坛回复 / 浏览 (4 / 4376)
评论
5 楼
甘艳丽
2012-08-26
堆中的数据是所有线程共享的,而栈中的数据是每个线程所私有的。。。你上面的写错了。
4 楼
nintenyun
2009-11-05
String str1= new String("abc");
2个对象,一个在池中,一个在HEAP中
String str2= "abc";
一个对象,只是在String pool中
3 楼
javacoreSZ
2009-11-05
胡说八道...
2 楼
ceasarje
2009-10-13
不错,是目前见到的比较详细的new和""在堆栈层面的解释了,感谢分享。。。
1 楼
fishice
2009-10-13