Java 基础 -- 类加载

Java基础 -- 类加载

1. 什么是类加载?

我们编写的.java文件是如何转换成机器码执行的呢?一般来说有以下几个步骤:

【注】

  1. 加载到内存中的类被称为运行时类,这个运行时类时Class的一个对象,即Class的实例对应着一个运行时类

  2. 内存中的运行时类会缓存一段时间,这期间可以通过不同方式获取运行时类,一般来说主要有四种方式:

  • 调用运行时类的属性:类名.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

posted @   Claire_2099  阅读(71)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示