Java虛擬機器學習筆記(一)

來源:互聯網
上載者:User
類在虛擬機器記憶體中的生命週期:

——————————————————————
載入   Loading

驗證   Verification     |
準備   Preparation    |  串連  Linking
解析   Resolution     |

初始化 Initialization
使用   Using
卸載   Unloading
————————————————————————

解析的順序不一定,可以在初始化階段之後再開始,支援運行時綁定

 

類初始化:

1.new getstatic putstatic (final除外) invokestatic
2.使用java.lang.reflect包的方法對類進行反射調研
3.初始化子類觸發父類初始化 (真正使用到父介面時,如定義的常量)
4.虛擬機器啟動,使用者執行主類(包含main方法)

被動引用,不觸發初始化方法:
1.通過子類引用父類的靜態欄位
2.通過數組定義來引用類
3.常量在編譯階段會存入調用類的常量池中,本質上沒有直接引用到定義常量的表

=================================================

載入

1.通過一個類的許可權定名來擷取定義此類的二進位位元組流 zip jar war applet proxy jsp db
2.將這個位元組流所代表的靜態儲存結構轉化為方法區的運行時資料結構
3.在Java堆中產生一個代表這個類的java.lang.Class對象,作為方法區這些資料的訪問入口

 

 

驗證

1.檔案格式驗證  正確解析並儲存在方法區
2.中繼資料驗證    語義校正,符合Java語言規範
3.位元組碼驗證 資料流和控制流程分析 Halting Problem 1.6 -XX: -UseSplitVerifier關掉最佳化
4.符號引用驗證 符號引用中全限定名,符號描述,訪問性  -Xverify:none

 

 

準備

正式為類變數分配記憶體並設定類變數初始值,在方法區分配。
注意執行個體變數和對象一起分配在堆中,不在這一過程。
final常量將會賦值,其他都是初始值 0 false ...

 

 

解析

1.類或介面解析
2.欄位解析
3.類方法解析
4.介面方法解析

 

 

初始化

 

執行類構造器<clinit>
1.順序收集所有類變數賦值動作和靜態塊 
2.虛擬機器會保證先調父類<clinit>
3.虛擬機器會保證一個類<clinit>在多線程下加鎖和同步

=================================================

 

 

類載入器

1.類與載入器確認唯一性
2.雙親委派模型 Parents Delegation Model
 啟動類載入器  Bootstrap ClassLoader
 擴充類載入器 Extension ClassLoader
 應用程式類載入器 Application ClassLoader
 自訂類載入器   User ClassLoader
除了頂層的啟動類載入器外,其他都有自己的父類載入器,
父子關係使用組合來複用父載入器代碼,優先調父類載入器載入類
3.非雙親委派模型
 向前相容,重寫loadClass()
 線程上下文類載入器 Thread Context ClassLoader JNDI JDBC JCE
 程式動態性,代碼熱替換HotSwap 

 OSGi,網狀結構的類載入器

  1.將以java.*開頭的類,委派給父類載入器載入
 2.否則,將委派列表名單內的類,委派給父類載入器載入
 3.否則,將Import列表中的類,委派給Export這個類的Bundle的類載入器載入
 4.否則,尋找當前Bundle的ClassPath,使用自己的類載入器載入
 5.否則,尋找類是否在自己的Fragment Bundle中,如果在,則委派給Fragment Bundle的類載入器載入
 6.否則,尋找Dynamic Import列表的Bundle,委派給對應的Bundle的類載入器載入
 7.否則,類尋找失敗

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.