聊聊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,

原文发布于微信公众号 - 码匠的流水账(geek_luandun)

原文发表时间:2018-08-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券