heap與stack的區別


java 的內存分為兩類,一類是棧內存,一類是堆內存。棧內存是指程序進入一個方法時,
會為這個方法單獨分配一塊私屬存儲空間,用於存儲這個方法內部的局部變量,當這個方法
結束時,分配給這個方法的棧會釋放,這個棧中的變量也將隨之釋放。
堆是與棧作用不同的內存,一般用於存放不放在當前方法棧中的那些數據,例如,使用 new
創建的對象都放在堆里,所以,它不會隨方法的結束而消失。 方法中的局部變量使用 final
修飾后,放在堆中,而不是棧中。
 
 
 
 
區別:
1.heap是堆,stack是棧。

2.stack的空間由操作系統自動分配和釋放,heap的空間是手動申請和釋放的,heap常用new關鍵字來分配。

3.stack空間有限,heap的空間是很大的自由區。

Java中,

若只是聲明一個對象,則先在棧內存中為其分配地址空間,

若再new一下,實例化它,則在堆內存中為其分配地址。

4.舉例:

數據類型 變量名;這樣定義的東西在棧區。

如:Object a =null; 只在棧內存中分配空間

new 數據類型();或者malloc(長度);    這樣定義的東西就在堆區

如:Object b =new Object(); 則在堆內存中分配空間


免責聲明!

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



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