JVM编译、加载、反射 理解-1

本文详细介绍了JVM中的类加载过程,包括类加载器的层次结构,如Bootstrap、Platform和System Class Loader,以及类加载的全盘负责、父类委托和缓存机制。此外,还讲解了类的连接阶段(验证、准备和解析)和初始化步骤,触发类初始化的六种情况,是理解Java运行机制的重要内容。
摘要由CSDN通过智能技术生成

在这里插入图片描述
一个Java源文件,会被JVM编码成.class文件(字节码文件),每个java程序都需要运行在自己的JVM上,再告知JVM程序的运行入口,再被JVM通过类加载器加载到内存中。当程序要使用某个类的时候,如果这个类没有被加载到内存中,则系统会通过类的加载,类的连接,类的初始化将这三个步骤来对类进行初始化。

类的加载:

Class类是运行时类型信息的对应类,对于手动编写的类,在JVM编译时会为这个类创建一个Class对象来保存这个类相关的类型信息,并将之保存在与这个类同名的.class文件中(编译后的字节码文件中保存的就是这个类对应的Class对象),当我们需要这个类的对象时,JVM会查看这个类是否已经加载到内存中,如果没有加载,则会把.class文件加载内存中。例如我们编写好一个Student类,当我们第一次new这个学生类对象时,类加载器子系统就会把这个类的.class文件加载到内存中(将之放在运行时的数据区的方法区内,接着在堆区创建一个Class对象,Class对象封装了类在方法区的数据结构),根据对应的Class对象来创建这个学生类,无论创建了多少个实例对象,在JVM中都只有一个这个类的Class对象。
那么,什么是类加载器呢?
1、 Bootstrap class loader:它是虚拟机的内置类加载器,通常表示为null ,并且没有父null
2、 Platform class loader:平台类加载器可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值