JVM classloader

 

 

你必须知道的ClassLoader


为什么必须知道:ClassLoader ClassLoader是类加载的重要类。


分类:主要分为bootstrapClassLoader,ExtClassLoader,AppClassLoader。
是基于C++ 实现,主要加载Javahome/lib,ExtClassLoader主要加载javaHome/lib/ext,AppClassLoader主要加载classpath下面的类。

什么是Classloader :类的初始化装载的一个类,

加载顺序,先让父加载器加载,如果找不到在用子加载器加载。如果父类想访问子类加载器需要Thread.cureentThread.getClassloader.获取子加载类。


自定义ClassLoader,为了保证委托双亲委托的原则,需要覆盖findClass. 为什么要双亲委托呢。一般程序是使用AppClassLoader ,上面还有两个ClassLoader,所以叫双亲。

常用的ClassLoader场景
SPI和Tomcat
SPI 使用ClassLoader的Thread.cureentThread.getClassloader 来在lib里面访问自定义标准类如mysql.driver。
Tomcat 通过自定义类来实现类库复用,程序隔离等。

 

参考文档

https://blog.csdn.net/xyang81/article/details/7292380

https://blog.csdn.net/briblue/article/details/54973413

https://mp.weixin.qq.com/s/54ZrYCLD6rzk8T52s4wyOQ

 

posted @ 2018-05-29 10:56  javabeginer  阅读(83)  评论(0编辑  收藏  举报