zoukankan      html  css  js  c++  java
  • java类加载过程

    系统会通过加载,连接,初始化三个步骤来对该类进行初始化操作:
    ①类的加载:
    类加载时指将类的class文件(字节码文件)载入内存中,并为之创建一个java.lang.Class对象,我们称之为字节码对象.
    类的加载过程由类加载器(ClassLoader)完成,类加载器通常由JVM提供,我们称之为系统类加载器,我们也可以继承ClassLoader类来提供自定义类加载器.
    不同的类加载器可以实现加载本地字节码文件,jar包中的字节码,通过网络加载字节码等.
    ②类的连接:
    当类被加载进内存之后,系统为之生产一个对应的Class对象,接着把类的二进制数据合并到JRE中.
       1>:验证:检测被加载的类是否有正确的内部结构.
       2>:准备:负责为类的static变量分配内存,并设置默认值.
       3>:解析:把类的二进制数据中的符号引用(变量)替换为直接引用(深入分析JVM).
    ③类的初始化:
    在此阶段,JVM负责对类进行初始化,主要对static变量进行初始化. 类的初始化一个类包含几个步骤:
      1>:如果该类还未被加载和连接,则程序先加载并连接该类.
      2>:如果该类的直接父类还未被初始化,则先初始化其父类.
      3>:如果类中有初始化语句(静态代码块),则系统依次执行这些初始化语句.
  • 相关阅读:
    常见三种字符编码的区别:ASCII、Unicode、UTF-8
    字节、字、bit、byte的关系
    SQLite 3 中的数据类型
    关于线程安全和可重入的区别
    线程安全与可重入
    c++中const变量定义与头文件包含的有关问题
    extern "C"的用法解析
    gVim for windows 简单使用教程
    函数对象
    Qt核心剖析:信息隐藏
  • 原文地址:https://www.cnblogs.com/tinyj/p/10130243.html
Copyright © 2011-2022 走看看