JVM系列(之ClassLoader)
生活随笔
收集整理的這篇文章主要介紹了
JVM系列(之ClassLoader)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Class Loader
Java運作流程
內部class?loader
- bootstrap?class?loader?--引導類加載器,它負責加載Java的核心類【java.*?】(如classpath下面的類庫),不是?java.lang.ClassLoader的子類,而是由JVM自身實現的。Code?.?URL[]?urls=sun.misc.Launcher.getBootstrapClassPath().getURLs(); ?
- extension?classloader?-擴展類加載器,它負責加載JRE的擴展目錄【javax.*?】(JAVA_HOME/jre/lib/ext或者由java.ext.dirs系統屬性指定的)中JAR的類包。
- system?classloader?-系統(也稱為應用)類加載器,它負責加載系統或用戶實現的類,在JVM被啟動時,加載來自在命令java中的-classpath或者java.class.path系統屬性或者?CLASSPATH操作系統屬性所指定的JAR類包和類路徑,如果沒有特別指定,則用戶自定義的任何類加載器都將該類加載器作為它的父加載器。ClassLoader.getSystemClassLoader()獲取。
ClassLoader加載過程
classloader?加載類用的是全盤負責委托機制。所謂全盤負責,即是當一個classloader加載一個Class的時候,這個Class所依賴的和引用的所有?Class也由這個classloader負責載入,除非是顯式的使用另外一個classloader載入;委托機制則是先讓parent(父)類加載器?(而不是super,它與parent?classloader類不是繼承關系)尋找,只有在parent找不到的時候才從自己的類路徑中去尋找。
按Loader的應用場景分類
- 系統class?loader
- 調用者?class?loader
加載當前類,可以是SystemClassLoader,通過getClass().getClassLoader()來得到
Output
- 線程上下文class?loader
? 每一個線程都有一個關聯的上下文ClassLoader.如果使用new?Thread()方式生成新的線程,新線程將繼承其父線程的上下文ClassLoader.
Output
?
?
?
?
轉載于:https://www.cnblogs.com/mixes/p/4108538.html
總結
以上是生活随笔為你收集整理的JVM系列(之ClassLoader)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个有带萱字好听的名字。
- 下一篇: (转)金额转中文大写