Java 基础 -- 类加载
Java基础 -- 类加载
1. 什么是类加载?
我们编写的.java文件是如何转换成机器码执行的呢?一般来说有以下几个步骤:
【注】
-
加载到内存中的类被称为运行时类,这个运行时类时Class的一个对象,即Class的实例对应着一个运行时类
-
内存中的运行时类会缓存一段时间,这期间可以通过不同方式获取运行时类,一般来说主要有四种方式:
-
调用运行时类的属性:类名.class
-
调用运行时类的对象,调用getClass()
-
调用class的静态方法forName(String classPath)
-
使用类的加载器ClassLoader
2. 类加载过程
程序主动使用某个类,此时这个类不在内存中,系统会通过以下步骤对类进行初始化:
-
加载(Load):将类的.class文件读入内存,并为之创建一个java.lang.Class对象,通过Class对象访问使用类相关数据,此过程由类加载器完成
-
链接(Link):将类的二进制数据合并到JRE中
- 验证:检验被加载的类是否由正确的内部结构并和其他类协调一致
- 准备:为类的类变量分配内存,设置默认初始值
- 解析:将类的二进制数据中的符号引用替换成直接引用
-
初始化(Initialize):JVM负责对类进行初始化
3. 类加载器
4. 参考资料
https://zhuanlan.zhihu.com/p/33509426
https://zhuanlan.zhihu.com/p/25228545
https://zhuanlan.zhihu.com/p/375932112
https://zhuanlan.zhihu.com/p/51374915
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧