类加载全过程-JVM内存分析-反射机制核心原理-常量池理解

1.类加载的全过程分为三个阶段

1.加载

意思是将class文件内容加载到内存中,将其转换为方法区中的运行时数据结构和在堆中生成一个C代表这个类的java.lang.Class对象,作为方法区的访问入口

2.链接-----》分为三个部分

1.验证 确保加载的类信息符合JVM规范,没有安全方面的问题
2.准备 正式为类变量(static变量)分配内存并设置类变量的初始化值得阶段 这些内存都在方法区中进行分配
3.解析 虚拟机常量池中得符号引用直接替换为直接引用过程

3.初始化

就是将静态变量(静态域)和静态块执行类构造器方法---就是将两个语句合并执行

  • 当发现这个父类还进行初始化时,先对父类进行初始化


    img_0044.png

2.类如何才会进行初始化

1.类的主动引用

  • new 一个对象
  • 使用类的静态成员和静态方法
  • 虚拟机执行主函数main所在的类
  • 当初始化一个类的时候,如果父类没有初始化,则会优先初始化父类
    2.类的被动引用
    1.当访问一个静态域时,只有真正声明这个域的类才会被初始化
  • 通过子类调用父类的静态变量时,不会导致子类被初始化
    2.通过数组定义 产生类的对象
    3.引用常量不会产生 (调用了常量池里的常量)

一个类只能初始化一次

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容