Stack和Heap的区别

来源:互联网 发布:树莓派安装ubuntu 编辑:程序博客网 时间:2024/05/17 03:39

http://afy.itpub.net/post/1638/43731

 

Java中对象都是分配在heap(堆)中。从heap中分配内存所消耗的时间远远大于从stack产生存储空间所需的时间。
【继续深入】Stack和Heap的区别
(1)每个应用程序运行时,都有属于自己的一段内存空间,用于存放临时变量、参数传递、函数调用时的PC值的保存。这叫stack。
(2)所有的应用可以从一个系统共用的空间中申请供自己使用的内存,这个共用的空间叫heap。
(3)stack中的对象或变量只要定义好就可使用了,应用程序结束时会自动释放。
(4)而要使用heap中申请的变量或对象只能定义变量指针,并要求在运行过程中通过new来动态分配内存空间,而且必须显示地free你申请过的内存,不过Java的垃圾回收机解决了这个问题,它会帮你释放这部分内存。
(5)stack中变量的大小和个数会影响exe的文件大小,但速度快。堆中的变量大小与exe大小关系不大,但分配和释放需要耗费的时间远大于stack中分配内存所需的时间。

原创粉丝点击