Java JVM(入門篇04)類加載的過程 和 對象 產生的內存分析.

一、類加載的過程.

1. 上圖

在這裏插入圖片描述

2. 具體分析

1.加載:使用ClassLoader把 .class 文件寫入到方法區內存
2.鏈接

  • 2.1驗證:判斷編譯是否能通過
  • 2.2準備:加載static,和final到方法區(這裏static會賦默認值,final賦指定值)
  • 2.3.解析(將常量池中的符號引用替換爲直接引用)
    (1)符號引用:就是 final float PI 中的 PI 就是符號
    (2)直接引用:final float PI 的 PI的方法區的地址2341410x 就是直接引用
    (3)解析階段,JVM會吧所有的類名,方法名,字段名,的符號引用替換爲內存地址的直接引用。
    3.初始化:給默認的static賦值 和 執行static靜態代碼塊
  • 父類沒有初始化就先初始化父類

二、對象產生的內存解析

在這裏插入圖片描述

  1. 會先把main所在的類
    Demo類Class模板放到方法區,
    然後棧中壓棧執行main方法

  2. new Person()就會去方法區
    尋找有無Person 的 Class
    發現無,就加載Peron的Class模板到方法區

  3. Perso模板加載到方法區後
    就通過模板創建對象在堆區
    然後棧區儲存變量的引用“zhangsan”

更多:

  • 加載static main() 方法的時候就會吧“張三"儲存在Demo Class 的常量區(隸屬方法區)
  • 然後zhangsan 在堆中的 對象的 name 值 “張三” 調用的 方法區 Demo class 模板 裏面的 “張三”
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章