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对象,这时候就相当于卸载

总结

相关推荐
vipxieliang17 小时前
ValidX vs 正则表达式:可读性与维护性对比
java·spring boot
3378017 小时前
5分钟搞懂登录认证和授权框架Spring Security
java·spring boot
vipxieliang17 小时前
Spring Security 6.x 实战:认证、授权与 JWT 集成
java·spring boot
world781122617 小时前
【C++】set 和 map
java·前端·c++·set·map
学长毕设17 小时前
基于SpringBoot的社区体育馆预约系统的设计与实现
java·spring boot·后端
程序猿乐锅17 小时前
Streamlit 实现 AI 聊天 Agent:角色提示词、流式输出与会话管理
开发语言·前端·笔记·后端·python·学习
小南知更鸟17 小时前
【2026 年 Python 包管理工具选型:从“工具崇拜”回到工程约束】
开发语言·python
努力努力再努力wz17 小时前
【Lua入门系列】从动态类型到变量作用域:彻底理解 local、全局变量与跨文件访问
开发语言·junit·lua
Rain的Java大神之路17 小时前
100 亿条数据如何快速写入 MySQL?从 231 天到 3.5 小时,我把面试官问懵了
java·后端·面试
程序猿乐锅18 小时前
面向对象练习:图书借阅系统里的封装、抽象类与多态
开发语言·前端·数据库·后端·python·学习·1024程序员节