1. 程式人生 > >簡介JVM中棧和堆?

簡介JVM中棧和堆?

一、Java的堆記憶體和棧記憶體 Java把記憶體劃分成兩種:一種是堆記憶體,一種是棧記憶體。   堆:主要用於儲存例項化的物件,陣列。由JVM動態分配記憶體空間。一個JVM只有一個堆記憶體,執行緒是可以共享資料的。   棧:主要用於儲存區域性變數和物件的引用變數,每個執行緒都會有一個獨立的棧空間,所以執行緒之間是不共享資料的。 ---------------------  空間分配:

棧:由作業系統知道哦哦那個分配釋放,存放函式引數值、區域性變數值。使用一級快取

堆:一般由我們自己分配,使用二級快取。

二、儲存的資料型別

1、堆用來儲存new出來的物件和陣列

2、棧用來儲存基本型別變數和物件的引用變數的地址

3、方法區儲存方法和static變數

三、優缺點

1、堆的優點-可以動態的分配記憶體大小,生命週期不確定。缺點-速度略慢

2、棧的優點-速度快,缺點-存在棧中的資料大小和生命週期必須是明確的,缺少靈活性。 ---------------------