1. 程式人生 > >學習這東西需要持久

學習這東西需要持久



Jvm記憶體包括三部分:堆(heap)、棧(stack)、方法區(method);

堆區:

  1. 儲存的全部是物件,每個物件都有一個與之對應的class資訊;

  2. Java中分配堆記憶體是自動初始化的;

  3. Jvm中堆區只有一個,被所有的執行緒所共享;堆區中不存放基本資料型別和物件的引用,只存放這個物件本身(例項變數作為物件的一部分也存在於堆區中);

  4. 堆區的記憶體回收由java的垃圾回收機制管理;

  5. 堆具有先進先出的特點;

    變數:成員變數(全域性變數) 和 區域性變數; 成員變數分為:例項變數 和 類變數(static靜態變數)

棧區:

  1. 每一個執行緒包含一個棧區,每個執行緒之間的棧區是私有的,不能被其他棧訪問,也就是說對於一個java

    程式執行時通過對棧的操作來完成的。棧以幀為單位儲存執行緒的狀態。JVM只對棧進行兩種操作:以幀為單位的壓棧、出棧。

  2. 棧區存放的是基本資料型別的物件以及物件的引用;

  3. 當執行緒啟用一個java方法的時候,JVM就會線上程的棧中新壓入一個幀,這個幀就是當前幀。在此方法執行期間,這個幀將用來儲存引數,區域性變數,中間計算過程和其他資料。

  4. 棧具有先進後出的特點;

方法區:

  1. 方法區又叫靜態區,和堆區一樣被所有的執行緒共享。方法區包含所有的方法、建構函式和static變數;

  2. 方法區包含的都是整個應用程式中唯一的元素。

Demo