JAVA虛擬機中堆棧的設計是很漂亮的。
他是先在棧內存開辟一塊空間,假設為p1,然后再通過關鍵字new為p1在堆內存中開辟一塊空間。當程序需要在棧內存p1指向的堆內存空間中讀寫數據時,要先找到棧內存中的p1,然后由p1指向該堆內存空間,再進行讀寫數據。
為什么要這樣設計呢?大概有兩點:
- 棧的存取速度特別快,僅次于寄存器。當程序要在內存中讀寫數據時,先找到棧,再通過棧的指向到堆內存中進行數據的讀寫。由于不用再遍歷速度慢而且數據多的堆內存,所以程序的運行速度會更快。
- 便于內存的回收。當程序的一些數據不用后,就會丟掉棧內存中相應的數據,此時以前指向的堆內存空間就沒有了棧的指向,變成了垃圾。這時Java虛擬機的垃圾回收機制就會將這塊沒有棧指向的堆內存空間回收,供給以后的程序使用。
posted on 2010-10-12 03:29
Mineralwasser 閱讀(84)
評論(0) 編輯 收藏