1. 程式人生 > >JVM記憶體結構------堆,棧,方法區,以及堆和棧的區別

JVM記憶體結構------堆,棧,方法區,以及堆和棧的區別

一 、 定義

  • 堆:FIFO佇列優先,先進先出JVM只有一個堆區被所有執行緒所共享!堆存放在耳機快取中,呼叫物件的速度相對慢一些,生命週期由JVM的垃圾回收機制定。
  • 棧:FILO先進後出,暫存資料的地方。每個執行緒都包含一個棧區!棧存放在一級快取中,存取速度較快,“棧是限定僅在表頭進行插入和刪除操作的線性表”。
  • 方法區:用來存放方法和static變數。

二 、存放的資料型別

  • 堆:用來儲存new出來的物件和陣列
  • 棧:用來儲存基本資料型別變數和物件的引用變數的地址
  • 方法區:儲存方法和static變數

三、優缺點

  • 堆的優點 - 可以動態的分配記憶體的大小,生命週期不確定。缺點 - 速度略慢。
  • 棧的優點 - 速度快。缺點 - 存在棧中的資料大小和生命週期必須是明確的,缺少靈活性。