@回首不見彼岸花 @回首不見彼岸花 你說的這部分是jvm加載類的過程,jvm在加載一個類的時候會根據(jù)全類名也就是帶有包名的完整類名找到相應的字節(jié)碼文件也就是編譯生成的.class文件,然后生成一個java.lang.Class的類,這個類就是要加載的類往史,然后還需要 ①校驗增淹,包括字節(jié)碼校驗欧引、元數(shù)據(jù)校驗垮媒、符號校驗等听系,以保證生成的類符合jvm規(guī)范贝奇;② 準備,這個階段會給靜態(tài)變量賦默認初始值靠胜,給final的變量賦值掉瞳。③ 解析,將符號引用解析成直接引用浪漠,包括方法解析陕习、接口解析等;④ 初始化址愿,給類的成員變量賦值该镣。完成以上步驟這個類就加載完成了 對象也初始化完成可以用了。
觸發(fā)jvm加載類的時機之一就是調用class.forname, 還有調用一個類的靜態(tài)變量或者靜態(tài)方法响谓,還有new损合,還有jvm啟動時指定的類,這些都會出發(fā)jvm去加載一個類娘纷。
另外類的加載機制遵循 ① 全盤委托嫁审,一個類的和他依賴和調用的類都由一個加載器加載 ②雙親委托,加載一個類時總是由父類先去加載赖晶,找不到再由子類加載土居。③緩存機制,所有加載過的類都會被緩存起來嬉探,加載一個類時先到緩存里找擦耀,如果沒有再去加載class文件。
最后類的加載器包括三種:BootstrapClassLoader 負責加載核心java類涩堤;ExtensionClassLoader,負責加載lib/ext下的擴展類眷蜓;ApplicationClassLoader負責加載classpath下的類。
JAVA動態(tài)代理代理模式 為其他對象提供一個代理以控制對某個對象的訪問胎围。代理類主要負責為委托了(真實對象)預處理消息吁系、過濾消息、傳遞消息給委托類白魂,代理類不現(xiàn)實具體服務汽纤,而是利用委托類來完成服...