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

江西建设工程信息网站开一家网站建设公司

江西建设工程信息网站,开一家网站建设公司,百度竞价入门教程,在下列软件中JVM 加载 class 文件的原理机制 JVM#xff08;Java虚拟机#xff09;是一个可以执行Java字节码的虚拟机。它负责执行Java应用程序和应用程序的扩展#xff0c;如Java库和框架。 文章目录 JVM 加载 class 文件的原理机制1. JVM1.1 类加载器1.2 魔数1.3 元空间 2. 类加载2.1 …JVM 加载 class 文件的原理机制 JVMJava虚拟机是一个可以执行Java字节码的虚拟机。它负责执行Java应用程序和应用程序的扩展如Java库和框架。 文章目录 JVM 加载 class 文件的原理机制1. JVM1.1 类加载器1.2 魔数1.3 元空间 2. 类加载2.1 类加载过程2.2 双亲委派机制模型原理模型优势模型实现 1. JVM 1.1 类加载器 类加载器是JVM用来查找和加载.class文件到JVM中的组件。类加载器的主要职责是从指定的位置找到.class文件然后将其读入到内存中并生成对应的java.lang.Class对象。 启动类加载器Bootstrap ClassLoader用原生代码实现负责加载JVM核心库中的.class文件如rt.jar中的类。扩展类加载器Extension ClassLoader由Java实现负责加载jre/lib/ext目录中的.class文件或由系统变量java.ext.dirs指定的目录中的.class文件。应用程序类加载器Application ClassLoader由Java实现负责加载用户类路径classpath中的.class文件。用户自定义类加载器可以由用户自己编写继承自java.lang.ClassLoader用于特殊目的的类加载。 1.2 魔数 .class文件的开头四个字节被称为魔数Magic Number。魔数是0xCAFEBABE它是用来识别一个文件是否是.class文件。如果文件不是.class文件或者魔数不匹配JVM将无法执行该文件。 1.3 元空间 在JVM中.class文件加载后类信息被存储在方法区中这部分内存区域被称为元空间Metaspace。元空间是方法区的一部分用于存储类元数据包括类的定义信息、静态变量、常量池等。 2. 类加载 2.1 类加载过程 类加载过程大致可以分为以下几个步骤 加载Loading找到.class文件并将其读入内存创建一个java.lang.Class对象。链接Linking验证.class文件的正确性准备类在JVM中运行所需的内存并解析符号引用。初始化Initialization执行类构造器方法clinit()初始化类变量和静态初始化块。 2.2 双亲委派机制 双亲委派模型Parent Delegation Model是Java虚拟机JVM中类加载机制的核心设计之一。它定义了类加载器之间的加载顺序和委托规则确保了类加载过程的一致性和安全性。 模型原理 在双亲委派模型中类加载器分为层次结构子类加载器会首先请求其父类加载器完成类的加载任务。这个过程遵循 当一个类加载器需要加载某个类时它会首先请求其父类加载器加载该类。如果父类加载器能够成功加载该类则直接返回这个类如果父类加载器无法加载则子类加载器会尝试自己加载该类。如果子类加载器也无法加载该类则会抛出ClassNotFoundException异常。 这种委托关系的链条从下往上一直到达启动类加载器Bootstrap ClassLoader它是所有类加载器的顶层负责加载JVM的核心库如rt.jar中的类。 模型优势 避免类的重复加载由于类加载器之间的委托关系同一类只会在父类加载器中加载一次避免了重复加载同一个类节省了资源。保证类型安全所有非启动类加载器都委托给启动类加载器加载核心库中的类确保了这些类都是由可信的类加载器加载的从而保证了类型安全。防止核心API被篡改核心库的类由启动类加载器加载任何试图替换这些类的尝试都会被父类加载器拦截从而保护了Java核心API不被篡改。 模型实现 双亲委派模型的实现依赖于Java的ClassLoader类及其子类。 public class ClassLoader {private ClassLoader parent;public ClassLoader(ClassLoader parent) {this.parent parent;}public Class? loadClass(String name) throws ClassNotFoundException {// 首先检查是否已经加载过该类Class? c findLoadedClass(name);if (c null) {try {// 如果父类加载器不为空则委托父类加载器if (parent ! null) {c parent.loadClass(name);} else {// 如果父类加载器为空则由Bootstrap ClassLoader加载c findBootstrapClass(name);}} catch (ClassNotFoundException e) {// 如果父类加载器加载失败则由当前类加载器加载c findClass(name);}}return c;}// ... 其他方法 ... }ClassLoader的loadClass方法首先尝试从缓存中查找已经加载的类如果没有找到则根据双亲委派模型委托给父类加载器加载。如果父类加载器也无法加载则由当前类加载器负责加载。
http://www.tj-hxxt.cn/news/142189.html

相关文章:

  • 建网站的费用是多少seo怎么优化简述
  • 建设实验中心网站做的比较好的意大利网站
  • 网站建设目的意义网页制作的视频教程
  • 新手学做网站的书福州电子商务网站
  • 保定网站建设咨询wordpress评论微信登录
  • 网站建设系统 开源网络营销和传统营销的区别
  • 做网站用什么插件可拖拽 网站建设
  • 江门专业网站制作公司网络营销未来有哪些发展趋势
  • 会员管理系统功能介绍seo教程自学入门教材
  • 做网站前端的软件wordpress 捐助
  • 做电影网站会有什么惩罚本溪建设网站
  • 自己做网站都要什么手续福田网站优化
  • 有没有做字的网站怎样开电商线上店
  • 清城网站seo快站建站教程
  • 成都专业网站设计公司国家城乡和建设厅特殊工种网站
  • 大学生毕业设计网页设计sem 优化价格
  • 做网站无锡吉林市建设局网站
  • 连云港企业网站制作网络广告推广好的有哪些
  • 曰本做爰视频网站网站关键词查询
  • 旅游建设门户网站的方案网站建设 展滔科技大厦
  • 小区媒体网站建设专业做生鲜的网站
  • 北京建设网站专家怎么开网店?
  • 动图在线制作网站黄石城乡建设网站
  • 电子商务网站制作徐州手机网站优化公司
  • 网站开发亿玛酷专注4wordpress新奇插件
  • 青海西宁做网站多少钱最新手机网站推荐
  • 名片式网站模板wordpress健康主题
  • 长春建设局网站处长crm管理系统排名
  • 界面做的比较好的网站网上购物商城建设
  • 网站建设的内容管理怎么做网站支付