当前位置:  开发笔记 > 编程语言 > 正文

为什么ClassLoader的缓存按升序检查?

如何解决《为什么ClassLoader的缓存按升序检查?》经验,为你挑选了1个好方法。

为什么ClassLoader的缓存按递增顺序检查,而类加载以降序排列? 类装载机授权计划



1> 小智..:

Java中的ClassLoader基于三个原则:委托,可见性和唯一性.如果父级无法查找或加载类,则委托原则将类加载的请求转发到父类加载器并仅加载该类.可见性原则允许子类加载器查看父类ClassLoader加载的所有类,但父类加载器无法查看子加载的类.唯一性原则允许只加载一次类,这基本上是通过委托实现的,并确保子类ClassLoader不会重新加载已由父加载的类.

换句话说描述在这里:

Java中的类加载器是在树中组织的.根据请求,类加载器确定该类是否已在过去加载,在其自己的缓存中查找.如果该类存在于高速缓存中,则CL返回该类,否则,它将该请求委托给父类.如果未设置父级(是Null)或无法加载类并抛出ClassNotFoundException,则类加载器会尝试加载类本身并在其自己的路径中搜索类文件.如果可以加载该类,则返回该类,否则抛出ClassNotFoundException.缓存查找从子节点到父节点递归地进行,直到到达树根或在缓存中找到类. 如果到达了根,则类加载器尝试加载该类并展开从父级到子级的递归.总结我们有以下顺序:

高速缓存

这种机制确保类最容易被最靠近根的类加载器加载.

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有