类加载子系统

一、概述

加载阶段:在内存中生成一个代表这个类的java.lang.Class对象

链接阶段:①验证:字节流信息符合虚拟机要求

                  ②准备:为(类变量)static变量分配内存并设零值。 

                  注意:这里不会为实例变量分配初始化,类变量会分配在方法区中,而实例变量是会随着对象一起分配到Java堆中

                  ③解析:将常量池内的符号引用转换为直接引用的过程

初始化阶段:执行类构造器方法<clinit>()的过程

  1. 若该类具有父类,JVM会保证子类的<clinit>()执行前,父类的<clinit>()已经执行完毕

  2. 虚拟机必须保证一个类的<clinit>()方法在多线程下被同步加锁

二、类加载器

 

分类:

              ①  引导类加载器(Bootstrap ClassLoader)

                        Java的核心类库都是使用引导类加载器进行加载的。

              ②  自定义类加载器(User-Defined ClassLoader)

                        将所有派生于抽象类ClassLoader的类加载器都划分为自定义类加载器;

                        系统类加载器是全局唯一的;

双亲委派机制:

  1. 避免类的重复加载

  2. 保护程序安全,防止核心API被随意篡改

判断两个class对象是否相同:

  1. 类的完整类名必须一致,包括包名
  2. 加载这个类的ClassLoader(指ClassLoader实例对象)必须相同

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值