JAVA虚拟机中堆栈的设计是很漂亮的。
他是先在栈内存开辟一块空间,假设为p1,然后再通过关键字new为p1在堆内存中开辟一块空间。当程序需要在栈内存p1指向的堆内存空间中读写数据时,要先找到栈内存中的p1,然后由p1指向该堆内存空间,再进行读写数据。
为什么要这样设计呢?大概有两点:
- 栈的存取速度特别快,仅次于寄存器。当程序要在内存中读写数据时,先找到栈,再通过栈的指向到堆内存中进行数据的读写。由于不用再遍历速度慢而且数据多的堆内存,所以程序的运行速度会更快。
- 便于内存的回收。当程序的一些数据不用后,就会丢掉栈内存中相应的数据,此时以前指向的堆内存空间就没有了栈的指向,变成了垃圾。这时Java虚拟机的垃圾回收机制就会将这块没有栈指向的堆内存空间回收,供给以后的程序使用。
posted on 2010-10-12 03:29
Mineralwasser 阅读(83)
评论(0) 编辑 收藏