JVM常见面试题--关于虚拟机之虚拟机类加载机制的问题

一般作为Java程序员在面试的时候一般会问的大多就是Java内存区域、虚拟机垃圾算法、虚拟垃圾收集器、JVM内存管理这些问题了,对此我参照了一些网上的面试题做出了一些总结

 

简单说说类加载过程,里面执行了哪些操作?

 加载阶段由三个基本动作组成:

  1. 通过类型的完全限定名,产生一个代表该类型的二进制数据流
  2. 解析这个二进制数据流为方法区内的运行时数据结构
  3. 创建一个表示该类型的java.lang.Class类的实例,作为方法区这个类的各种数据的访问入口

对类加载器有了解吗?

 从Java虚拟机的角度分为两种不同的类加载器:启动类加载器(Bootstrap ClassLoader) 和其他类加载器。其中启动类加载器,使用C++语言实现,是虚拟机自身的一部分;其余的类加载器都由Java语言实现,独立于虚拟机之外,并且全都继承自java.lang.ClassLoader类

什么是双亲委派模型?

 双亲委派模型(Pattern Delegation Model),要求除了顶层的启动类加载器外,其余的类加载器都应该有自己的父类加载器。这里父子关系通常是子类通过组合关系而不是继承关系来复用父加载器的代码

TCCL:线程上下文类加载器破坏了双亲委派模式,主要是因为如果基础的类加载器需要求调用用户的代码,而基础的类加载器可能不认识用户的代码,例如Spring,所以java设计团队引入了线程上下文类加载器(Thread Context ClassLoader),这样可以通过父类加载器请求子类加载器去完成类加载动作。已经违背了双亲委派模型的一般性原则

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值