美文网首页java复习
2020-07-23类加载

2020-07-23类加载

作者: 智障猿 | 来源:发表于2020-07-23 21:11 被阅读0次

类加载

当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过类的加载,类的连接,类的初始化这三个步骤来对类进行初始化。如果不出现意外情况,JVM将会连续完成这三个步骤,所以有时也把这三个步骤统称为类加载或类初始化。

  • 类的加载
    ①就是指将class文件读入内存,并为之创建一个java.lang.Class对象
    ②任何类被使用时,系统都会为之建立一个java.lang.Class对象
  • 类的连接
    ①验证阶段:用于验证被加载的类是否有正确的内部结构,并和其他类协调一致
    ②准备阶段:负责为类的类变量分配内存,并设置默认初始化值
    ③解析阶段:将类的二进制数据中的符号引用替换为直接引用
  • 类的初始化
    ①在该阶段,主要是对类变量进行初始化
  • 类的初始化步骤
    ①假如类还未被加载和连接,则程序先加载并连接该类
    ②假如类的直接父类还未被初始化,则先初始化其直接父类
    ③假如类中有初始化语句,则系统依次执行这些初始化语句
    在执行第2个步骤的时候,系统对直接父类的初始化步骤也遵循初始化步骤1-3
  • 类的初始化时机
    ①创建类的实例
    ②调用类的类方法
    ③访问类或者接口的类(静态)变量,或者为该类变量赋值
    ④使用反射方式来强制创建某个类或接口对应的java.lang.Class对象
    ⑤初始化某个类的子类
    ⑥直接使用java.exe命令来运行某个主类

类加载器

  • 类加载器的作用
    ①负责将.class文件加载到内存中,并为之生成对应的java.lang.Class对象
  • JVM的类加载机制
    ①全盘负责:就是当一个类加载器负责加载某个Class时,该Class所依赖的和引用的其他Class也将由该类加载器负责载入,除非显示使用另外一个类加载器来载入
    ②父类委托:就是当一个类加载器负责加载某个Class时,先让父类加载器试图加载该Class,只有在父类加载器无法加载该类时才尝试从自己的类路径中加载该类
    ③缓存机制:保证所有加载过的Class都会被缓存,当程序使用某个class对象时,类加载器先从缓冲区中搜索该Class,只有当缓存区中不存在该Class对象时,系统才会读取该类对应的二进制数据,并将其转换成Class对象,存储到缓存区
  • ClassLoader:是负责加载类的对象
    Java运行时具有以下内置类加载器
    ①Bootstrap class loader:它是虚拟机的内置类加载器,通常为null,并且没有父null
    ②Platform class loader: 平台类加载器可以看到所有平台类,平台类包括由平台类加载器或其祖先定义的Java SE平台API,其实现类和JDK特定的运行时类
    ③System.class.loader:它也被称为应用程序类加载器,与平台类加载器不同。系统类加载器通常用于定义应用程序类路径,模块路径和JDK特定工具上的类
  • ClassLoader中的两个方法
    ①static ClassLoader getSystemClassloader():返回用于委派的系统类加载器
    ②ClassLoader getParent():返回父类加载器进行委派
package test03;

public class classloaderTest {
   public static void main(String[] args) {
       ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
       System.out.println(systemClassLoader);
       ClassLoader parent = systemClassLoader.getParent();
       System.out.println(parent);
       ClassLoader parent1 = parent.getParent();
       System.out.println(parent1);
   }
类加载器继承关系.png

相关文章

  • 2020-07-23类加载

    类加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过类的加载,类的连接,类的初始化这三个步骤来对...

  • 第一章 类加载过程

    要点 类加载过程 类加载器 一、类加载过程 1.类的加载过程 类的加载 .class文件过程分为:加载---->连...

  • 深入理解jvm类加载机制

    1.什么是类加载? 类加载机制一个很大的体系,包括类加载的时机,类加载器,类加载时机。 1.1类加载过程 加载器加...

  • java基础知识之java类加载器

    1. 什么是类加载器 类加载器就是用来加载类的东西!类加载器也是一个类:ClassLoader 类加载器可以被加载...

  • JVM类加载入门

    一 类加载顺序 class类加载-->验证-->准备--->解析--->初始化 class类加载:通过类加载器加载...

  • java类加载器及其原理

    java类加载器 : java中默认有三种类加载器:引导类加载器,扩展类加载器,系统类加载器(也叫应用类加载器) ...

  • 深入浅出“类加载器”

    内容概述 “类加载”介绍 “类加载器”介绍 深入“类加载器” 深入“父亲委托机制” 一,“类加载”介绍 “加载”是...

  • 《深入理解JVM虚拟机》读书笔记-类加载器&Java模块化系统

    类加载器 一.类加载器 1.1 类与类加载器 类加载器的定义: Java虚拟机设计团队有意把 类加载阶段中 的“ ...

  • 类加载机制(一)

    加载机制系列类加载机制(一)类加载机制(二)类加载机制(三) 类加载机制 1.JVM把class文件加载到内存,对...

  • 学习笔记 | JAVA的反射(二)

    利用反射机制动态加载类 、获取类的方法、获取类的属性 编译时刻加载类是静态加载类,运行时加载类是动态加载类 正常创...

网友评论

    本文标题:2020-07-23类加载

    本文链接:https://www.haomeiwen.com/subject/ckfklktx.html