聊聊java9的classloader

本文主要研究一下java9的classloader

java9之前的classloader

  • bootstrap classloader加載rt.jar,jre/lib/endorsed
  • ext classloader加載jre/lib/ext
  • application classloader加載-cp指定的類

java9及之後的classloader

  • bootstrap classloader加載lib/modules java.base java.security.sasl java.datatransfer java.xml java.desktop jdk.httpserver java.instrument jdk.internal.vm.ci java.logging jdk.management java.management jdk.management.agent java.management.rmi jdk.naming.rmi java.naming jdk.net java.prefs jdk.sctp java.rmi jdk.unsupported
  • ext classloader更名爲platform classloader,加載lib/modules java.activation* jdk.accessibility java.compiler* jdk.charsets java.corba* jdk.crypto.cryptoki java.scripting jdk.crypto.ec java.se jdk.dynalink java.se.ee jdk.incubator.httpclient java.security.jgss jdk.internal.vm.compiler* java.smartcardio jdk.jsobject java.sql jdk.localedata java.sql.rowset jdk.naming.dns java.transaction* jdk.scripting.nashorn java.xml.bind* jdk.security.auth java.xml.crypto jdk.security.jgss java.xml.ws* jdk.xml.dom java.xml.ws.annotation* jdk.zipfs
  • application classloader加載-cp,-mp指定的類 jdk.aot jdk.jdeps jdk.attach jdk.jdi jdk.compiler jdk.jdwp.agent jdk.editpad jdk.jlink jdk.hotspot.agent jdk.jshell jdk.internal.ed jdk.jstatd jdk.internal.jvmstat jdk.pack jdk.internal.le jdk.policytool jdk.internal.opt jdk.rmic jdk.jartool jdk.scripting.nashorn.shell jdk.javadoc jdk.xml.bind* jdk.jcmd jdk.xml.ws* jdk.jconsole

小結

java9模塊化之後,對classloader有所改造,其中一點就是將ext classloader改爲platform classloader,另外模塊化之後,對應的classloader加載各自對應的模塊。

doc

  • three-level hierarchy of class loaders,
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章