首页 > 编程语言 >java类加载过程

java类加载过程

时间:2022-08-30 13:45:16浏览次数:71  
标签:java 自定义 对象 ClassLoader 并发 过程 Class 加载

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作为新类的加载器。所以不同类加载器加载的类生成的对象之间相互交互时,需要比较注意,出现如下错误时,应该就是不同类加载器的对象之间的转换造成。

标签:java,自定义,对象,ClassLoader,并发,过程,Class,加载
From: https://www.cnblogs.com/wwwhhhqqq/p/16638988.html

相关文章