首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

JavaSE 內存流程圖解:棧、堆、方法區與對象創建全過程

     編輯:Java 綜合教學

JavaSE 內存流程圖解:棧、堆、方法區與對象創建全過程

JVM 內存四大區:方法區(靜態數據區)、棧、堆、常量池。

類加載與對象創建流程

  1. 代碼編譯為 .class,類加載器將類元數據(字段、方法、常量池)載入方法區;
  2. main 線程啟動,主棧幀入棧;
  3. new Animal(10):在堆分配對象內存,執行構造器初始化字段;
  4. 將堆對象地址賦給棧幀局部變量 a(引用);
  5. 調用 m_1(a):新棧幀入棧,引用值傳遞,指向同一堆對象;
  6. 方法內修改 a.age++ 影響堆對象,返回後 main 打印見修改結果。
public class OOP_05 {
    public static void main(String[] args) {
        Animal a = new Animal(10);
        m_1(a);
        System.out.println("main----->" + a.age); // 11
        System.out.println(a);
    }
    public static void m_1(Animal a) {
        a.age++;
        System.out.println("m_1 --->" + a.age); // 11
    }
}
class Animal { int age; Animal(int _age){ age = _age; } }

類結構九大組成

  1. 入口方法(main)
  2. 靜態變量
  3. 靜態方法
  4. 實例變量
  5. 實例方法
  6. 構造方法
  7. 靜態代碼塊
  8. 實例代碼塊
  9. 抽象方法

關鍵規則

  • 內存區域隔離,不允許跨域直接訪問;
  • 靜態方法不可直接調用非靜態成員;
  • 調用方法必須先建棧幀;
  • 引用傳遞本質是「值傳遞引用地址」。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved