博为峰Java技术题 ——JavaSE 类加载器Ⅰ
2019獨角獸企業重金招聘Python工程師標準>>>
[類加載器簡介]
博為峰小博老師:
類加載器負責將.class文件加載到內存中,并為之生成相應的java.lang.Class對象。
當JVM啟動時,會形成由三個類加載器(BootStrap、ExtClassLoader、AppClassLoader)組成的初始類加載器層次結構,如下圖:
其中,BootStrap由JVM加載,ExtClassLoader和AppClassLoader由BootStrap加載。
例子:用程序去證明上圖中對應的類加載器的父子關系(非繼承中的父子關系)
問題:當程序中用到一個類時,使用哪個類加載器加載該類?
當前線程的類加載器( Thread.getContextClassLoader() )去加載線程中的第一個類。
如果類A中引用了類B,Java虛擬機將使用加載類A的類加載器來加載類B(全盤負責)。
還可以直接調用ClassLoader.loadClass()方法來指定某個類加載器去加載某個類。
注意:每個類加載器加載類時,先委托給其上級類加載器(父類委托)。
當所有祖宗類加載器沒有加載到類,回到發起者類加載器,還加載不了,則拋ClassNotFoundException。(不去找發起者的子加載器,因為ClassLoader沒有getChild方法)
?
轉載于:https://my.oschina.net/u/2971691/blog/783728
總結
以上是生活随笔為你收集整理的博为峰Java技术题 ——JavaSE 类加载器Ⅰ的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SVN 命令行进行忽略设置
- 下一篇: Android Studio 使用Lam