收藏不看系列——JVM类加载

这个系列前思后想最后定位在了收藏不看系列,因为之前的很多分享都没有太多小伙伴给我反馈,而且很多都是收藏之后再也不会翻出手机再看一遍,所以决定这个系列就起了这么个名字。

JVM之类加载

JVM是Java最为核心的知识点,而且最为核心的设计理念。这一期分享的类属于所有JVM的基石,也就是说没有类的加载,那么就没有JVM后续的一切。

类加载器

类加载过程

加载

  • 通过全限定名称获取类的二进制字节码
  • 字节码中的所有静态内容存储到方法区中(运行时数据)
  • JVM中生成一个java.lang.Class的对象,存储到方法区中
    PS:这里还涉及到一个知识点(双亲委派模型),之后会单独提出一次跟大家分享

验证

  • 文件格式验证
  • 元数据验证
  • 字节码验证
  • 符号引用验证

准备

  • 准备阶段时这个是为类变量分配方法区并设置初始值

解析

将常量池内的符号引用替换为直接引用。

  • 类、接口解析
  • 字段解析
  • 类方法解析
  • 接口方法解析

初始化

这个初始化与准备阶段中的设置初始值是不同的概念,这里的初始化是根据程序制定的规则进行初始化类变量与其他资源(静态代码块等)


使用

这个阶段理解起来非常简单,就是写程序中使用的类创建对象,调用类方法等操作,这些都是使用阶段。


卸载

这个阶段也不需要过多解释了,一般这个阶段会在我们开发一些相对动态灵活的代码的时候可能会用到,比如:维护一个自定义的Class Loader,那么加载自定义类之后不再使用了,就需要将这些类进行卸载,在这个时候就到了这个段。

总结

这期主要是跟大家分享概念性的东西,希望大家可以对感兴趣的部分进行查询资料,之后会对每个阶段进行比较详细的分享。多谢关注评论交流。

你可能感兴趣的:(收藏不看系列——JVM类加载)