詳解Class加載過程02

Class進(jìn)入到內(nèi)存有三大步,分別是loading,linking,initlalizing.

?? ????上一次說到為什么要搞雙親委派模式,主要是為了安全凉逛,如果任何一個(gè)class都可以把它load到內(nèi)存中踊跟,打包給客戶,然后把密碼存儲(chǔ)成String對(duì)象涉茧,我可以把密碼發(fā)給自己赴恨,那就不安全了,雙親委派就不會(huì)出現(xiàn)這樣伴栓,自定義ClassLoader加載一個(gè)java.lang.String他就產(chǎn)生了警惕伦连,他先去上面查有沒有加載過雨饺,上面有加載過直接返回給你,不給你重新加載惑淳。
?? ????接下來繼續(xù)講加載器
?? ????加載器父加載器不是“類加載器的加載器”额港,也不是“類加載器的父類加載器”。
可以看看累加載器的范圍歧焦,它是來自于Launcher的源碼移斩。打印一個(gè)Class文件的toString的方法他默認(rèn)顯示是類的名字加上后面一個(gè)哈希code碼。這個(gè)類的名字是什么意思呢绢馍?是sun->misc包下面的Launcher類向瓷,這個(gè)類下面有一個(gè)內(nèi)部類叫ExeClassLoader,Launcher就是ClassLoader一個(gè)包裝類啟動(dòng)類舰涌,在這個(gè)類里面可以看出猖任,Bootstrap它加載的路徑是我們核心路徑而ext.dirs這個(gè)屬性指定的哪些路徑呢,為什么我們的AppClassCloader指定的是java.class.path這個(gè)路徑呢舵稠?其實(shí)所有的代碼都來自與Launcher的源碼超升。


類加載器范圍.png
自定義類加載器

自定義類加載器有幾個(gè)步驟:
1.繼承Classloader
2.重寫模板方法findClass
??-調(diào)用defineClass
3.自定義類加載器加載自加密的class
??-防止反編譯
??-防止篡改
簡(jiǎn)單的說就是從classloader繼承,繼承完了之后重寫它的findClass方法哺徊,在finanClass方法中室琢,找到load進(jìn)來的那個(gè)二進(jìn)制的內(nèi)容,load完了之后再把這部分的內(nèi)容轉(zhuǎn)換成class類對(duì)象落追,用defindclass盈滴。自己編譯好了,手動(dòng)加密轿钠。

lazylaoding

jvm虛擬機(jī)的實(shí)現(xiàn)都是用的懶加載就是什么時(shí)候需要這個(gè)類的時(shí)候我才去加載
嚴(yán)格的講應(yīng)該叫l(wèi)azyInitializing巢钓,jvm規(guī)范并沒有規(guī)定何時(shí)加載,但是嚴(yán)格規(guī)定了什么時(shí)候必須初始化
??-new getstatic putstatic invokestatic指令疗垛,訪問final變量除外
??-java.lang.reflect對(duì)類進(jìn)行反射調(diào)用時(shí)
??-初始化子類的時(shí)候症汹,父類首先初始化
??-虛擬機(jī)啟動(dòng)時(shí),被執(zhí)行的主類必須初始化
??-動(dòng)態(tài)語言支持java.lang.invoke.MethodHandle解析的結(jié)果為REF_getstatic REF_getstatic REF_invokestatic的方法句柄時(shí)贷腕,該類必須初始化背镇。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市泽裳,隨后出現(xiàn)的幾起案子瞒斩,更是在濱河造成了極大的恐慌,老刑警劉巖涮总,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胸囱,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡瀑梗,警方通過查閱死者的電腦和手機(jī)烹笔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門裳扯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谤职,你說我怎么就攤上這事嚎朽。” “怎么了柬帕?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)狡门。 經(jīng)常有香客問我陷寝,道長(zhǎng),這世上最難降的妖魔是什么其馏? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任凤跑,我火速辦了婚禮,結(jié)果婚禮上叛复,老公的妹妹穿的比我還像新娘仔引。我一直安慰自己,他們只是感情好褐奥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布咖耘。 她就那樣靜靜地躺著,像睡著了一般撬码。 火紅的嫁衣襯著肌膚如雪儿倒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天呜笑,我揣著相機(jī)與錄音夫否,去河邊找鬼。 笑死叫胁,一個(gè)胖子當(dāng)著我的面吹牛凰慈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播驼鹅,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼微谓,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了谤民?” 一聲冷哼從身側(cè)響起堰酿,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎张足,沒想到半個(gè)月后触创,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡为牍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年哼绑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了岩馍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抖韩,死狀恐怖蛀恩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情茂浮,我是刑警寧澤双谆,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站席揽,受9級(jí)特大地震影響顽馋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜幌羞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一寸谜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧属桦,春花似錦熊痴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至亏吝,卻和暖如春岭埠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蔚鸥。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工惜论, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人止喷。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓馆类,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親弹谁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子乾巧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容