JVM核心机制_类加载的全过程_java的内存分析_初始化时机。

  学习java的时间不短了,度过了是追求怎么用的阶段,我想在编程这条路上走的更踏实、更远。

一 JVM运行的基本过程 

  核心就是类加载的过程

  jvm 将class文件中的字节码内容加载到内存当中,并对内存进行链接校验、准备、解析),然后初始化,最总形成jvm可直接使用的java类型的过程。

  

  加载:静态

  字节码========》内存当中,

  将静态的数据 ===》方法区中的 运行时数据结构,

  并 在堆中生成一个代表这个类的java.lang.Class对象 为方法区类数据的访问接口。  这个过程需要类加载器的参与。

      链接:运行中

      将java类的二进制代码合并到 jvm运行状态中的过程。

  1.验证:确保加载的类加载的信息符合规范,没有安全问题。

  2.准备:为类变量分配内存,并设置类变量初始值

  3.解析:虚拟机内常量池的符号引用替换成直接引用

  举个例子: 即 肖总 找  北京市长  =========》 1米处的肖总 找 10米处的北京市长。

  初始化:(调用类构造器)

  1.初始化阶段是调用类构造器<clinit>方法的过程,类构造器<clinit> 方法是由编译器自动收集类中所有类变量的赋值动作,和静态语句块中的语句合并产生的。

  2.当一个类初始化时,发现其父类没有被初始化则需要父类初始化。

  3.虚拟机保证一个类的<clinit>方法在多线程环境运行中被正确加锁和同步。

===================================》》》》》

二类被加载过程示例。

 

  

看文章的时候如果,对你有那么一点点的启发,记得要鼓励一下我啊,因为我是一个爱古力少年。。
原文地址:https://www.cnblogs.com/xingtangxublog/p/8605688.html