类加载器

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

注意:JVM主要在程序第一次主动使用类的时候,才会去加载该类,也就是说,JVM并不是在一开始就把一个程序就所有的类都加载到内存中,而是到不得不用的时候才把它加载进来,而且只加载一次。

JVM 类加载机制

类加载子系统主要包含如下几项功能:

  1. 负责从文件系统或是网络中加载.class文件,class文件在文件开头有特定的文件标识。
  2. 把加载后的class类信息存放于方法区,除了类信息之外,方法区还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)。
  3. ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。
  4. 如果调用构造器实例化对象,则该对象存放在堆区。

虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。

JavaJVM

JVM 内存管理

JVM 整体架构根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 名 称 特征 作用 配置参数 异常 程 序 计 数 器 占用内存小,线 程私有,生命周 期与线程相同 大致为字节码行号指示器 无 无 虚 拟 机 栈 线程私有,生命 周期与线程相 同,使用连续的 内存空间 Java 方法执行的内存模 型,存储局部变量表、 操作栈、动...
JavaJVM

JVM 基础知识

什么是JVMJVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 主流的JVM 虚拟机名称 介绍 HotSpot Oracle/Sun JDK和OpenJDK都使用HotSPot VM的相同核心 J9 J9是IBM开发的高度模块化的JVM ...
JavaJVM