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

虚拟机类加载机制

与那些编译时需要进行连接的语言不同,在java语言中,类型的
动态加载:编写一个面向接口的应用程序,可以等到运行时再指定其实现类。

类加载:加载-连接-初始化-使用-卸载

一个类被调用时,会将其class文件从磁盘中加载到虚拟机中。

加载

(1)通过一个类的全限定名来获取定义此类的二进制字节流。
(2)将这个流转换为方法区的静态文件结构。
(3)在内存中生成Class对象,作为方法区的访问入口。

连接的过程

先验证class文件的安全性,然后开辟类变量的空间和位置,将常量池中的符号引用替换为直接引用。

初始化

初始化阶段就是执行类构造器()方法的过程。
()是javac编译器自动生成的产物。
()是类中的所有类变量的赋值当作和静态static块语句合并产生的,按照程序顺序生成。

类加载器

根据类的全限定名获取所需要的类。
对于任意一个类,都必须由加载它的类加载器和这个类本身一起确认其唯一性。对于每一个类加载器,都有一个独立的类名称空间。这里的唯一性,体现在equals()方法,isInstance()方法。

启动类加载器:加载<java_home>/lib目录的java核心类

扩展类加载器:加载<java_home>/lib/ext目录下的类库

应用程序类加载器:是ClassLoader.getSystemClassLoader()方法的返回值,加载用户路径上的类,即用户自己写的类

双亲委派:如果一个类加载器加载类,会先委派给启动类加载器,然后是扩展类加载器,发现类不在其加载路径上,才会由应用类加载器加载

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

相关文章:

  • Google Earth Engine(GEE)——逐月筛选影像,并给影像集合添加新的属性
  • 如何从智联招聘网站快速抓取职位详情?两大技巧揭秘
  • C#知识|ini文件操作
  • Linux系统学习之路
  • DNS介绍与部署-Day 01
  • python 图片爬虫记录
  • 本地安装Llama3.1与LobeChat可视化UI界面并实现远程访问大模型实战
  • MSF回弹木马在Ubuntu中测试
  • 大数据等保测评
  • CSS对元素的分类
  • 力扣第五十四题——螺旋矩阵
  • 中创算力:以知识产权转化运用促进高质量发展
  • C语言9~10 DAY(合集)
  • 【Kubernetes】应用的部署(一):金丝雀部署
  • 1.面试准备篇
  • Spring: try-catch 是否还会回滚
  • spdlog日志库--基础介绍
  • 【网络】网络编程套接字(二)
  • 1.1、centos stream 9安装Kubernetes v1.30集群 环境说明
  • Redis3
  • Oracle数据巡检 - 设计巡检模板
  • 优盘未格式化数据恢复实战指南
  • 【python基础】python基础习题练习(一)
  • GESP 4级样题 ---> 绝对素数
  • 大语言模型系列 - Transformer
  • Java面试之操作系统
  • springboot船舶维保管理系统--论文源码调试讲解
  • 【机器学习西瓜书学习笔记——神经网络】
  • 安装 electron 报错解决
  • 【Material-UI】Icon Button 组件详解