• 虚拟机加载类机制


    加载--连接(验证、准备、解析)---初始化----使用---卸载

       当且仅当5中情况 "初始化": 比如new关键字、反射、初始化一个类时父类未初始化,则初始化父类、main方法的类,JDK1.7时 methodHandle方法。

       加载:
           加载做了三件事:

            1、通过一个类的全限定名来获取定义此类的二进制字节流

            2、讲这个字节流所代表的静态存储结构转化为方法区的运行时数据结构

            3、在内存中生成一个代表着各类的java.lang.Class对象,作为方法区的这个类的各种数据的访问入口

       验证: 

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

       准备:

         正式为类变量分配内存并设置变量初始值。这些变量使用的内存都将在方法区中进行分配
       public static int value = 123;
            类变量指静态变量,准备阶段会给value设置 0 ,赋值为123是在初始化阶段才会执行

     解析:

             解析阶段是虚拟机将常量池内的符号引用替换为直接引用的过程 

        初始化:

             真正执行JAVA代码,,,<clinit>()方法由编译器 自动收集类中所有类变量的赋值动作和静态语句块(static{})语句合并产生 .收集顺序由出现顺序决定。

       

  • 相关阅读:
    web前端优化之reflow(减少页面的回流)
    Javascript深拷贝
    MySQL 配置优化
    MySQ中Lmax_connections的合理设置
    Too many connections解决方案
    Linux 查看文件内容
    ON DUPLICATE KEY UPDATE
    jquery $.each 和for怎么跳出循环终止本次循环
    使用redis避免客户端频繁提交数据
    windows下为mysql添加日志
  • 原文地址:https://www.cnblogs.com/zhimingxin/p/8961575.html
Copyright © 2020-2023  润新知