当前位置:首页 > Java入门 > 正文内容

java类加载器是什么(java类加载器如何工作)

abcsky887个月前 (10-29)Java入门108

今天给各位分享

黑马程序员微信号:heiniu526传智播客旗下互联网资讯,学习资源免费分享平台一说Java代码的执行,接触过Java代码的同学肯定会想到:编写,、编译,、运行这三个阶段, 其中:编写:是在后缀名为.java的文件中, 根据Java语法规则编写源代码;

java类加载器是什么(java类加载器如何工作)

编译:是将.java文件(源代码文件)编译成.class文件(字节码文件);运行:是通过JVM来执行.class字节码文件大白话解释:Java文件是程序员能看懂,,但是计算机看不懂的文件,需要先把它转换成.class文件,计算机才能识别,从而来执行,虽然这三个阶段都可以通过IDE实现,但是好多人容易忽略一个细节,那就是:在JVM执行seo美式咖啡.class字节码文件之前, 需要先通过”类加载器”将该字节码文件加载到内存中,而这个过,就是我们要详聊的话题。

本文会从以下3点来介绍”Java中的”类加载器:1. 类加载器的概述2. 类加载器的分类3. 类加载机制首先,我们先来聊下类加载器的概述类加载器(ClassLoader)是负责加载类的对象的,也就是将.class字节码文件加载到JVM内存中的。

那它什么时候才会去加载.class字节码文件呢?答案是:当Java程序第一次使用某个类中的内容,而该类的字节码文件在内存中不存在时, 类加载器就会去加载该类的字节码文件俗话说“渡人先渡己” 要想成为别人的榜样,帮助别人, 首先要做好自己,生活中seo美式咖啡如此,,类加载器也一样。

要想加载我们自定义的类,类加载器必须先完成“自加载”的过程聊到这不得不提的就是“类加载器的分类”了Java中的类加载器主要分为以下四类:1. 根类加载器(BootStrapClassLoader),主要负责加载jre/lib/rt.jar相关的字节码文件的。

2. 扩展类加载器(ExtensionClassLoader), 主要负载加载 jre/lib/ext/*.jar 这些jar包的, 该类加载器在JDK1.9的时候更名为:Platform Class Loader, 其父类加载器为: null。

3. 应用程序类加载器(ApplicationClassLoader),seo美式咖啡 主要负责加载用户自定义的类以及classpath环境变量所配置的jar包的该类加载器在JDK1.9的时候更名为:System ClassLoader。

其父类加载器为:ExtensionClassLoader4. 自定义类加载器(UserClassLoader),负责加载程序员指定的特殊目录下的字节码文件的大多数情况下,自定义类加载器只需要继承ClassLoader这个抽象类,重写findClass()和loadClass()两个方法即可。

如下图:

到这, 相信大家对类加载器已经初步有一定的认识和理解了。接下来,,我们写代码来验证一下,代码和打印结果如下:

到这里,代码就已经验证完毕了其实我们现在seo美式咖啡一直在研究的是JVM类加载机制的“加载循序”现在,,我们来研究下它的“检查顺序”, 请你思考,假设:D:\compile, ext\*.jar, rt.jar三类中都有 A.class,那么A.class是否会被加载3次,如果不会,,它的加载顺序是什么样的?。

答案是:不会被加载3次,,并最终会由BootStrapClassLoader来加载A.class原因是因为APPClassLoader类加载器(以下简称:app)加载之前,会先询问ExtClassLoader类加载器(以下简称: ext)是否加载。

如果ext加载, app就不加载了, 反之则app加载.同样, ext在加载之前,也会询问Bseo美式咖啡ootStrapClassLoader类加载器(以下简称: bootstrap)是否加载,如果bootstrap加载,则ext就不加载了, 反之,则ext加载。

这也是:JVM类加载机制的“双亲委派机制”最后,我们再来聊一聊“类加载机制”在JVM中类加载机制主要有3种:1. 全盘加载, 顾名思义就是当某一个类加载器加载某个.class文件时, 默认也会连同该文件所依赖的.class一起加载(除非显示声明通过某个指定的类加载器加载)。

2. 缓存机制, 即所有类加载器已经加载过的.class文件都会被保存到缓存中, 下次使用该.class文件时, JVM会优先从缓存中查找, 如果没有才会去加载指定的seo美式咖啡字节码文件, 这也是为什么当字节码文件变化后,需要重启JVM后才能看到修改效果的原因。

3. 双亲委派,大白话解释:儿子(App)要星星, 他自己实现不了,就找他老爹(Ext)要,他老爹能实现的话就给他了,实现不了,就找他爷爷(BootStrap)要说:你孙子要天上的星星,他爷爷如果能实现就给了,如果也实现不了, 就会告诉他爹(Ext),让你儿子(App)自己实现吧。

这种情况有点极,属于谁都没有加载,则程序报错,会抛出异常总结:类加载器自上而下检查(App --> Ext --> BootStrap),自下而上加载(BootStrap --> Ext --> App)。

热点文章◆  黑马程序员史seo美式咖啡上最强JavaEE学习路线图震撼发布!!!◆  详解JavaEE中级程序员路线图,其涉及课程资源已更新!◆  本周更新 | JavaEE学习路线图数据库专题+服务中间件专题

我就知道你会“在看”

▼点击 阅读原文加程序员交流群

扫描二维码推送至手机访问。

版权声明:本文由海南拓宏网络科技工作室发布,如需转载请注明出处。

本文链接:http://4blc.com/post/768.html

分享给朋友:

“java类加载器是什么(java类加载器如何工作)” 的相关文章

合肥数字经济规划师招聘(合肥数字经济高地)

本篇文章给大家谈谈   中安在线、中安新闻客户端讯 日前,记者从合肥市人力资源和社会保障局获悉,合肥拟开展高校毕业生“双千培养工程”数字经济培训项目根据工作计划安排,面向高校和社会招募500名学员参加培训,培训方向为大数据处理、Python+AI人工智能、Java、前端、UI等专项...

java面试遇到过哪些难题(java面试太难)

今天给各位分享 今天,我们分析一下java程序员面试失败的5大原因,如果你以后想在java行业发展,请认真阅读以下内容。 1、说得太少特别是那些开放式的问题,如“请自我介绍一下”或“请讲一下你曾经解决过的复杂难题”HR会通过你对这些技术和非技术问题的回答来评估你对工作的激情...

软件技术java方向就业前景(软件技术java方向就业岗位)

本篇文章给大家谈谈 作为一名计算机专业的研究生教育工作者,我来回答一下这个问题首先,对于计算机科学与技术专业的同学来说,考研时可以继续选择本专业,相对于其他计算机相关专业来说,计科专业的人才培养规模还是比较大的,而且计科专业的研究生教育阶段经过多年的建设,不仅学科体系成熟度比较高,...

java编程入门官方教程(编程的java是什么)

今天给各位分享 什么是编程?我用最直白的语言,来跟你解释编程是什么编程就是:用类似英语的语言,和电脑对话,指挥电脑为你工作你指挥英国人,要用英语给他下命令,指挥计算机,那肯定要用计算机懂得语言,这个语言就叫Java Python C#。 小时候,父母会教我们说话,也在教我们...

天猫代入驻什么意思(代办天猫入驻费用)

本文分享给大家的是: 不少网友想入驻天猫开店,2020天猫怎么入驻?我为大家介绍最新流程及费用,感兴趣的亲不要错过本文啦。接下来一起看看吧! 一,需要哪些资料:经营不同品牌、不同品类所需要提交的材料有所不同商家可以根据实际经营情况在天猫入驻小帮手中选择输入您要经营的店铺类型...

春节英语词汇的英文怎么说(春节英语词汇的英文怎么写)

本篇文章给大家谈谈 又是一年咯,如果你正在看这篇文章那小编也顺便祝你牛年大吉,身体健康,发大财!并且也顺便给大家说说关于春节英语单词有哪些?迎春接福 Greet the New Year and encounter happiness 吉祥如意 Good fortune a...