學習這東西需要持久
阿新 • • 發佈:2018-12-26
Jvm記憶體包括三部分:堆(heap)、棧(stack)、方法區(method);
堆區:
-
儲存的全部是物件,每個物件都有一個與之對應的class資訊;
-
Java中分配堆記憶體是自動初始化的;
-
Jvm中堆區只有一個,被所有的執行緒所共享;堆區中不存放基本資料型別和物件的引用,只存放這個物件本身(例項變數作為物件的一部分也存在於堆區中);
-
堆區的記憶體回收由java的垃圾回收機制管理;
-
堆具有先進先出的特點;
變數:成員變數(全域性變數) 和 區域性變數; 成員變數分為:例項變數 和 類變數(static靜態變數)
棧區:
-
每一個執行緒包含一個棧區,每個執行緒之間的棧區是私有的,不能被其他棧訪問,也就是說對於一個java
-
棧區存放的是基本資料型別的物件以及物件的引用;
-
當執行緒啟用一個java方法的時候,JVM就會線上程的棧中新壓入一個幀,這個幀就是當前幀。在此方法執行期間,這個幀將用來儲存引數,區域性變數,中間計算過程和其他資料。
-
棧具有先進後出的特點;
方法區:
-
方法區又叫靜態區,和堆區一樣被所有的執行緒共享。方法區包含所有的方法、建構函式和static變數;
-
方法區包含的都是整個應用程式中唯一的元素。
Demo