Java堆與棧

Java的堆是一個位於隨機訪問存儲器(RAM)的運行時數據區。一般使用new操做符在堆中建立對象,它們不須要程序代碼來顯式的釋放spa

堆是由垃圾回收來負責的,堆的優點是能夠動態地分配內存大小,生存期也沒必要事先告訴編譯器,由於它是在運行時動態分配內存的,Java的垃圾收集器會自動收走這些再也不使用的數據。對象

但缺點是,因爲要在運行時動態分配內存,存取速度較慢。內存

Java的棧也位於RAM,它的存取速度比堆要快,僅次於寄存器且據能夠共享,主要存放一些基本類型的變量和對象的引用;但存在於棧中的數據大小與生存期必須是肯定的,缺少靈活性。編譯器

棧有一個很重要的特殊性,就是存在棧中的數據能夠共享。編譯

基本數據類型存放到棧變量

引用數據類型存放到堆垃圾回收

相關文章
相關標籤/搜索