JVM面试题--类加载器

什么是类加载器,类加载器有哪些

类加载子系统,当java源代码编译为class文件之后,由他将字节码装载到运行时数据区

BootStrap ClassLoader

启动类加载器或者叫做引导类加载器,是用c++实现的,嵌套在jvm内部,主要是用来加载java的核心库的

ExtClassLoader

拓展类加载器,主要是加载jdk安装目录下,jre下的lib下的ext,也就是拓展目录,加载其中的jar包,如果用户把自己的文件也放到当前目录下,也会自动使用加载器来加载这些类

AppClassLoader

应用类加载器,负责加载的是环境变量,同时他也是默认的类加载器,一般来说java应用的类都是由它来完成加载的

CustomizeClassLoader

自定义类加载器,加载自定义配置

什么是双亲委派模型?

JVM为什么采用双亲委派机制?

类装载的执行过程?

类从加载到虚拟机中开始,直到卸载为止,它的整个生命周期包括了:加载、验证、准备、解析、初始化、使用和卸载这7个阶段。其中,验证、准备和解析这三个部分统称为连接(linking)

加载

当Person类被加载后,就会存储到运行时数据区的两块区域进行存储,一是方法区,存储的类的信息,比如构造函数,方法,字段等。二是堆,会开辟一片空间来存储class对象,当我们创建具体对象的时候,其实就是基于这个class对象。

每个对象的对象头都会指向这个class对象,但是其中的具体内容,需要去方法区才能获得,这个时候,class对象就能去方法区找到信息,获取数据结构,然后创建对象

验证

准备

在当前阶段,会给默认值赋值,b在当前阶段的值是0,在初始化阶段才会变成10

解析

初始化

使用

卸载

当用户程序代码执行完毕,jvm会销毁创建的class对象,这时候就相当于卸载

总结

相关推荐
听情歌落俗12 分钟前
MATLAB3-1变量-台大郭彦甫
开发语言·笔记·算法·matlab·矩阵
Propeller19 分钟前
【Android】View 交互的事件处理机制
android·java
杨杨杨大侠22 分钟前
Atlas Mapper 教程系列 (5/10):集合映射与嵌套对象处理
java·开源·github
ERP老兵_冷溪虎山23 分钟前
Python/JS/Go/Java同步学习(第十三篇)四语言“字符串转码解码“对照表: 财务“小南“纸式转码术处理凭证乱码崩溃(附源码/截图/参数表/避坑指南)
java·后端·python
是2的10次方啊24 分钟前
如何设计10万QPS秒杀系统?缓存+消息队列+分布式锁架构实战
java
心灵宝贝25 分钟前
Tomcat Connectors 1.2.37 源码编译安装教程(mod_jk 详细步骤)
java·tomcat
杨杨杨大侠27 分钟前
Atlas Mapper 教程系列 (6/10):Spring Boot 集成与自动配置
java·开源·github
傻傻虎虎37 分钟前
【Docker】容器端口暴露+镜像生成实战
java·docker·容器
练习时长一年1 小时前
搭建langchain4j+SpringBoot的Ai项目
java·spring boot·后端
zhangfeng11331 小时前
在 R 语言里,`$` 只有一个作用 按名字提取“列表型”对象里的单个元素 对象 $ 名字
开发语言·windows·r语言