jvm双亲委派机制
雙親委派模型的工作過(guò)程是:如果一個(gè)類加載器收到了類加載的請(qǐng)求,它首先不會(huì)自己去嘗試加載這個(gè)類,而是把這個(gè)請(qǐng)求委派給父類加載器去完成,每一個(gè)層次的類加載器都是如此,因此所有的加載請(qǐng)求最終都應(yīng)該傳送到最頂層的啟動(dòng)類加載器中,只有當(dāng)上一層類加載器反饋?zhàn)约簾o(wú)法完成這個(gè)加載請(qǐng)求(它的搜索范圍中沒(méi)有找到這個(gè)類)時(shí),下一層類加載器才會(huì)嘗試自己去加載;
JDK為什么要設(shè)計(jì)雙親委派模型,有什么好處?
1、確保安全,避免Java核心類庫(kù)被修改;
2、避免重復(fù)加載;
3、保證類的唯一性;
如果你寫一個(gè)java.lang.String的類去運(yùn)行,發(fā)現(xiàn)會(huì)拋出如下異常;
可以打破JVM雙親委派模型嗎?如何打破JVM雙親委派模型?
可以;
想要打破這種模型,那么就自定義一個(gè)類加載器,重寫其中的loadClass方法,使其不進(jìn)行雙親委派即可;
補(bǔ)充:
https://zhuanlan.zhihu.com/p/269214344
總結(jié)
- 上一篇: jvm在创建对象时采用哪些并发安全机制
- 下一篇: jvm 什么是对象头,里面有什么