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

大良营销网站建设策划/大型网站seo课程

大良营销网站建设策划,大型网站seo课程,网站建设服务费属于,dw做网站需要数据库么目录 Java程序是怎样被运行的 类加载器的作用 加载类文件 链接类 定位类 类加载器间的委派 实现类的隔离 类加载器的类型 启动类加载器(Bootstrap Class Loader) 扩展类加载器(Extension Class Loader) 应用程序类加载器…


 

目录

Java程序是怎样被运行的

类加载器的作用

加载类文件

链接类

定位类

类加载器间的委派

实现类的隔离

类加载器的类型

启动类加载器(Bootstrap Class Loader)

扩展类加载器(Extension Class Loader)

应用程序类加载器(Application Class Loader)

总结

双亲委派机制

 举个栗子


Java程序是怎样被运行的

       我们的一个java程序是如何能够被操作系统运行的,大概步骤如下:

  1. 编写HelloWorld.java 并保存。
  2. Java编译器 【javac.exe】 将我们的java文件【HelloWorld.java】编译生成 类文件【即HelloWorld.class文件,是一种二进制的字节码文件】并提交给虚拟机【JVM】。
  3. JVM 将编译生成的 HelloWorld.class 文件加载到内存中,并解释执行其中的字节码。解释器【java.exe】将字节码逐行解释成机器码并执行,完成对 HelloWorld.java 程序的运行。

思考:一个java文件从编译到运行的过程中,类加载器在其中发挥了什么作用?

类加载器的作用

         Java类加载器(Java Class Loader)是 Java虚拟机(JVM)的重要组成部分,它负责将Java类加载到JVM中

加载类文件

        类加载器的主要作用是根据类的全限定名(Fully Qualified Name)从文件系统、网络或其他地方加载对应的类文件,并将其转化为JVM内部的二进制格式。类文件通常是以.class为扩展名的二进制文件,其中包括类的结构信息、方法信息等。

链接类

        类加载器在加载类文件后,会进行链接处理,包括验证、准备和解析三个阶段。验证是指对类文件进行合法性检查,确保它符合JVM规范;准备是指为类中的静态变量分配内存,并设置默认值;解析是指将符号引用转化为直接引用,使得类可以被正确调用。

定位类

        类加载器在加载类文件时,需要从指定的搜索路径中查找对应的类文件。搜索路径包括Bootstrap Classpath、Extension Classpath和Application Classpath等,具体路径由类加载器的类型决定。

类加载器间的委派

        类加载器的另一个重要作用是按照委派机制(Delegation Model)加载类。即当一个类需要被加载时,先由当前类加载器查找该类是否已经被加载。如果没有被加载,则将该任务委派给其父类加载器,直到委派到启动类加载器为止。如果所有父类加载器都无法加载这个类,再由当前类加载器自己尝试加载。

实现类的隔离

        类加载器可以实现类的隔离,不同的类加载器之间加载的类是相互隔离的。这种隔离性可以保证不同的应用程序之间不会相互干扰,同时也可以避免不同版本的类文件之间的冲突。

类加载器的类型

        Java类加载器主要分为三种类型:启动类加载器(Bootstrap Class Loader)、扩展类加载器(Extension Class Loader)和应用程序类加载器(Application Class Loader)。

启动类加载器(Bootstrap Class Loader)

        也称为引导类加载器它负责加载JVM自身需要的基础类库,包括核心类库(rt.jar)、扩展类库(ext)和其他一些重要的类库。启动类加载器是JVM内部的一部分,由C++编写,不是Java类,因此无法通过Java代码获取该类加载器

 rt.jar 是lib目录中最大的jar包,打开后我们会发现,这个包下都是我们常用的Java类库的文件

扩展类加载器(Extension Class Loader)

        也称为系统类加载器,它负责加载JVM扩展目录(ext)中的jar包。扩展目录是位于JRE目录下的一个目录,用于存放扩展的Java类库,JVM在启动时会自动加载该目录下的jar包。扩展类加载器是Java类,是由Bootstrap Class Loader加载的。

        ext文件夹在 jre/lib/ext/ 目录下,在JDK1.8之前的javafx就是在这个目录下的,javafx在JDK9之后就被单独拎出去了,如果需要写javafx可以复制 JDK1.8/jre/lib/ext/ jfxrt.jar 这个jar包或者去openjfx官网去下载新版的javafx。

除此之外,ext目录还有很多java很多外部需要jar包,当我们的java代码中用到相关类库的类或方法时,它会随着类加载器被加载到内存当中。

应用程序类加载器(Application Class Loader)

        也称为用户自定义类加载器,它负责加载应用程序类路径(classpath)下的类库。classpath是指JVM查找类文件的路径,可以由用户自定义,通常包括JVM启动时指定的类路径和一些第三方jar包。应用程序类加载器是Java类,是由扩展类加载器加载的。

        也就是我们自己需要外部引用的jar包,和我们自己项目中写的类

总结

        总体来说,启动类加载器主要负责加载Java虚拟机自身需要的类库扩展类加载器负责加载JVM扩展目录中的类库应用程序类加载器负责加载用户自定义的类库。三种类加载器按照委托机制进行协作,构成了Java类加载器体系的基础。

双亲委派机制

        双亲委派机制是 Java 类加载器的一种机制,它规定了类的加载顺序。当一个类加载器需要加载一个类时,它首先会将该任务委托给它的父类加载器,如果父类加载器还有父类加载器,则会一直向上委托,直到最终委托给启动类加载器为止。只有当父类加载器无法加载该类时,子类加载器才会尝试加载该类。

 举个栗子

        我们知道,在java核心类库(rt.jar包内部)中有我们常用的一个类String【java.lang.String】,如果我们尝试自己创建一个包 java.lang 并且写一个String 类会发生什么呢?

 原因:由于我们自己写一个 java.lang.String 类,并尝试使用自定义的类加载器加载该类,但双亲委派机制会首先查找父类加载器能否加载该类,如果父类加载器能够加载,则不会使用自定义的类加载器加载该类。

        所以,强烈不建议覆盖 Java 核心类库中的任何类,因为这可能会导致系统不稳定,甚至无法正常运行。

下一篇【类加载内存分析】

http://www.jmfq.cn/news/5152231.html

相关文章:

  • 做文案的网站/本周新闻热点
  • 网站策划主要工作是什么/软件制作平台
  • 仿站工具下载后咋做网站/提高工作效率的工具
  • 做网站淘宝条形码/深圳互联网推广公司
  • 网站做违法的事情投诉/临沂seo优化
  • c 动态网站开发/如何创建自己的卡网
  • 广药网站建设试卷/信息互联网推广
  • 宁夏交通建设质监局官方网站/广告关键词有哪些
  • 企业网站建设有名 乐云seo/南京seo
  • PR做视频需要放网站上/哪个行业最需要推广
  • 阿里云做电影网站/在线crm
  • 国内做网站制作比较/爱站seo工具包
  • 杭州装饰网站建设/百度推广代理商名单
  • 企业建网站的费用/网站模板套用教程
  • wordpress修改站点名/无锡网络优化推广公司
  • 建设银行企业网站银行/nba西部排名
  • 淘客网站难做吗/起名最好的网站排名
  • 有没有专门做教育培训的网站/推广获客
  • 易讯网络网站建设/太原网络推广公司哪家好
  • 计算机编程与网站建设/国内重大新闻
  • 日本做任务赚钱的网站/优化大师使用心得
  • 上海网站开发建设服务/seo优化技术教程
  • 网站建设需要哪些素材/seo关键词智能排名
  • 网站开发模板/百度平台推广该怎么做
  • 微网站开发软件/找人帮忙注册app推广
  • 网站入口你明白我的意思吧/免费顶级域名注册
  • 学做美食交流网站有哪些/灰色词排名推广
  • 在哪做网站建设/关键词优化的技巧
  • 学前端有必要找培训机构吗/百度seo网络营销书
  • 乐清网站建设honmau/如何制作网页游戏