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


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

    一 JVM运行的基本过程 

      核心就是类加载的过程

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

      

      加载:静态

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

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

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

          链接:运行中

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

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

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

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

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

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

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

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

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

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

    二类被加载过程示例。

     

      

    看文章的时候如果,对你有那么一点点的启发,记得要鼓励一下我啊,因为我是一个爱古力少年。。
  • 相关阅读:
    js字符串数组['1','2','3']转number
    antd-vue中给table表格整行加点击事件
    vue中路由在新的标签页打开
    antd中的form表单 initialValue导致数据不更新问题
    vue中computed的作用以及用法
    gitlab新增ssh
    CentOS7安装配置ActiveMQ
    利用已有的缓存地图文件发布ArcGIS Server瓦片服务
    CentOS7上使用源码安装物联网大数据平台TDengine
    一些可以使用的在线地图服务
  • 原文地址:https://www.cnblogs.com/xingtangxublog/p/8605688.html
Copyright © 2020-2023  润新知