一腊嗡、類生命周期
java代碼經(jīng)過編譯生成.class二進制文件凡辱,通過類加載器加載到jvm中運行,最后不需要的時候被回收域蜗,這是一個jvm整體運行的一個情況巨双。
類加載進jvm后又經(jīng)過怎么一個過程呢?
加載:一個類什么時候加載進來呢霉祸?在使用它的時候才會加載進來筑累,比如main方法里面調用。加載的時候如果當前類有父類丝蹭,需要將父類也加載進來慢宗。
驗證:必要的數(shù)據(jù)檢驗。檢查是否合法啊奔穿,可能字節(jié)碼里被可以篡改了镜沽。
準備:給類分配空間,以及靜態(tài)變量分配空間并賦初始值贱田。
解析:將符號引號替換為直接引用缅茉。
初始化:給靜態(tài)變量賦值正確的初始值。
二男摧、類加載器
java的類加載器分為啟動類加載器蔬墩、擴展類加載器、應用類加載器耗拓、自定義加載器筹我。
- 啟動類加載器:負責加載/jre/lib下的核心類庫
- 擴展類加載器:負責加載/jre/lib/ext下的類庫
- 應用類加載器:可以認為是加載自己寫的類
- 自定義加載器:也可以自己定義加載類的規(guī)則
三、雙親委派機制
當加載類的時候帆离,不是直接自己進行加載蔬蕊,而是問父加載器能不能加載,一直向上詢問哥谷,直到根加載器岸夯,當父加載器不能加載的時候再向下進行嘗試加載。
意義:防止出現(xiàn)同樣多份的字節(jié)碼们妥。