• java的类加载机制


    1、类的加载、连接、与初始化

                          

    • 加载:在硬盘上查找,并加载累的二进制数据进内存

    类加载是指将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据。

    • 连接

    -验证:确保被加载类的正确性

    -准备:为类的静态变量分配内存,并将其初始化为默认值

    -解析把类中的符号引用转换为直接引用

    • 初始化:为类的静态变量赋正确的初始值、  

    类的初始化时机:

    • 主动使用:
      • 创建类的实例
      • 访问某个类的活接口的金泰变量,或者对静态变量赋值
      • 调用类的静态方法
      • 反射,如:class.forName()
      • 初始化一个类的子类
      • java虚拟机启动时被标明为启动类的类
    • 初始化步骤  
      • 加入这个类还没有被加载和连接,那就先进行加载和连接
      • 假如类存在直接的父类,并且这个父类还没有被初始化,那就先初始化直接的父类
      • 假如勒种存在初始化语句,那就一次执行这些语句(从上到下,如static{}
    • 除了上述六种情况,其他使用Java类的方式都看看做是被动使用,不会导致类的初始化
    • 当java虚拟机初始化一个类时,要求它的所有父类都已经被初始化,但是这条规则并不适用于接口。
      •   在初始化一个类时,并不会先初始化他所实现的接口。
      •   在初始化一个接口时,并不会先初始化它的父接口。

               因此,一个负借口并不会以为它的子接口或者实现类的初始化而初始化,只有当程序首次使用特定接口的静态变量时,才会导致该接口的初始化。

    附文:http://hxraid.iteye.com/blog/747625

     

  • 相关阅读:
    数据库里面的表空间,用户在实际开发中的使用
    并行编程的模型机制
    临时表在开发中的使用

    HIbernate编程模型
    网络数据如何可靠传输
    Spring Security编程模型
    java的缓存框架
    sort函数使用自定义数据排序使用
    FailOver的机制
  • 原文地址:https://www.cnblogs.com/zhangyfr/p/6707407.html
Copyright © 2020-2023  润新知