heap與stack的區別

Java 的內存分爲兩類,一類是棧內存,一類是堆內存。棧內存是指程序進入一個方法時,
會爲這個方法單獨分配一塊私屬存儲空間,用於存儲這個方法內部的局部變量,當這個方法
結束時,分配給這個方法的棧會釋放,這個棧中的變量也將隨之釋放。
堆是與棧做用不一樣的內存,通常用於存放不放在當前方法棧中的那些數據,例如,使用 new
建立的對象都放在堆裏,因此,它不會隨方法的結束而消失。 方法中的局部變量使用 final
修飾後,放在堆中,而不是棧中。 
spa

區別:
1.heap是堆,stack是棧。

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

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

Java中,對象

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

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

4.舉例:get

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

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

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

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

相關文章
相關標籤/搜索