当前位置: 首页 > news >正文

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

总结

 

http://www.lryc.cn/news/106484.html

相关文章:

  • js怎么计算当前一周的日期
  • 【图论】差分约束
  • 13 springboot项目——准备数据和dao类
  • Java 基础进阶总结(一)反射机制学习总结
  • ERROR: transport error 202: gethostbyname: unknown host报错解决方案
  • PyTorch高级教程:自定义模型、数据加载及设备间数据移动
  • JavaEE——SpringMVC中的常用注解
  • 【严重】Metabase 基于H2引擎的远程代码执行漏洞
  • 0基础学习VR全景平台篇 第75篇:多现场
  • html:去除input/textarea标签的拼写检查
  • 自然语言处理从入门到应用——LangChain:提示(Prompts)-[提示模板:创建自定义提示模板和含有Few-Shot示例的提示模板]
  • d3dx9_30.dll如何修复,分享几种一键修复方法
  • 6.8 稀疏数组
  • ROS版本的ORB-SLAM3用RealSense D455相机实时运行测试
  • Vue中对对象内容调用的Demo
  • 语音识别 — 特征提取 MFCC 和 PLP
  • BES 平台 SDK之按键的配置
  • 【Golang系统开发】搜索引擎(1) 如何快速判断网页是否已经被爬取
  • 记录--一个好用的轮子 turn.js 实现仿真翻书的效果
  • 《Spring Boot源码解读与原理分析》书籍推荐
  • C++ 什么时候使用 vector、list、以及 deque?
  • 视频创作者福音,蝰蛇峡谷NUC12SNKI7视频剪辑测评
  • 使用Qt中的QDir类进行目录操作
  • qt服务器 网络聊天室
  • meanshift算法通俗讲解【meanshift实例展示】
  • 正交变换和仿射变换
  • Electron 多端通信桥 MessageChannelMain和 MessagePortMain 坑点汇集
  • Html5播放器按钮在移动端变小的问题解决方法
  • Rust 开发环境搭建【一】
  • C# Blazor 学习笔记(3):路由管理