1. 程式人生 > >java中棧、堆、靜態區的區別

java中棧、堆、靜態區的區別

0?wx_fmt=gif

棧:

棧記憶體的主要作用是存放基本資料型別和引用變數,棧的記憶體管理是通過“先進後出”的原則。

基本資料型別的變數(int、short、long、byte、float、double、boolean、char等)以及物件的引用變數,其記憶體分配在棧上,變量出了作用域就會自動釋放。

堆:

堆記憶體用來存放由new建立的物件和陣列。在堆中分配的記憶體由虛擬機器的垃圾回收器來管理。在堆中產生了一個數組或物件後,還可以在棧中定義一個特殊的變數,讓棧中這個變數的取值等於陣列或物件在堆記憶體中的首地址,棧中的這個變數就成了陣列或物件的引用變數。引用變數就相當於是為陣列或物件起的一個名稱,以後就可以在程式中使用棧中的引用變數來訪問堆中的陣列或物件。 

靜態區:

  靜態區儲存的是被static宣告的靜態變數,靜態區屬於方法區的一部分,在方法區中每個執行緒都共享該記憶體區域。

0?wx_fmt=jpeg