java堆和棧的理解


棧:stack,它是java運行的單位
堆:heap是存儲的單位
java虛擬機中,數據類型分為兩種:基本類型和引用類型。
基本類型8種:byte,char,short,int,long,float,double,boolean
引用類型包括:類類型,接口類型,數組。
所以棧中存的是基本類型和局部變量,當代碼塊中定義一個變量時,java會自動分配內存。當超過變量的作用域后,java會自動釋放掉這塊內存。
而堆內存的是引用類型,當通過new實例化得到一個引用變量時,java虛擬機會在堆中開辟一個不一定是連續的空間分配給該實例,根據零散的內存地址,實則是根據哈希 算法生成一長串數字指向該實例的物理地址,相當於門牌號起到標識作用。當引用丟失了,會被垃圾回收機制回收,但不是立馬釋放堆內存。
在這提個問題:java的參數傳遞到底是值傳遞還是引用傳遞呢?
回答這個問題呢,首先要明確,程序運行過程中永遠是在棧內運行,所以java的參數傳遞只能傳基本數據類型和對象的引用,不會傳對象本身。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM