簡單理解堆,棧和方法區

JAVA的JVM的內存可分爲3個區:堆(heap)、堆棧(stack)和方法區(method)

  • 堆區:

    1. 提供所有類實例數組對象存儲區域

    2. jvm只有一個堆區(heap)被所有線程共享,堆中不存放基本類型和對象引用,只存放對象本身

  • 棧區:

    1. 每個線程包含一個棧區,棧中只保存基礎數據類型的對象自定義對象的引用(不是對象),對象都存放在堆區中

    2. 每個棧中的數據(原始類型和對象引用)都是私有的,其他棧不能訪問。

  • 方法區:

    1. 又叫靜態區,跟堆一樣,被所有的線程共享。方法區包含所有的classstatic變量

    2. 方法區中包含的都是在整個程序中永遠唯一的元素,如class,static變量。

    3. 運行時常量池都分配在 Java 虛擬機的方法區之中

栗子


public void test(){
  A a = new A();
  int b = 1;
}

public class A{

}

這個栗子中

  • a是A對象的引用所以放在棧中,A是自定義對象所以放在堆中.

  • b是基礎數據類型所以在棧中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章