java类加载过程

https://blog.csdn.net/weixin_37766296/article/details/80545283

 

https://www.cnblogs.com/wangwudi/p/12327942.html

 

类的加载顺序

ClassLoader中默认的加载顺序:先查找是否已经加载,如果没有,调用parent的loadClass。如果所有父加载器也不能加载,调用本加载器的findClass加载。代码如下截图

类的并发加载

类加载器如果要支持类的并发加载,则需要注册自己支持并发加载,在ClassLoader中实现并发加载,getClassLoadingLock会在支持并发加载的情况下为每个类返回单独的锁,如果不支持并发加载,择返回自己(loader对象)最为锁。

 

自定义加载器:

自定义加载器,如果要自己实现对某些类的加载,应该重写LoadClass函数,遇到需要自己加载的类,需要读取字节码之后,使用ClassLoader.defineClass等函数实现。

一个.class文件被不同的加载器加载到内存后,生成了多个Class对象。一个Class对象由class的全限定名和加载器唯一确定。不同加载器加载的Class生成的对象,属于不同的类,不能相互转换。

在一个函数中创建对象而引起的新的类的加载,优先使用这个类的classloader作为新类的加载器。所以不同类加载器加载的类生成的对象之间相互交互时,需要比较注意,出现如下错误时,应该就是不同类加载器的对象之间的转换造成。

posted @   bwuhpqt  阅读(80)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示