• 保存到桌面  加入收藏  设为首页
梦之城官方网站手机版

热点推荐:Java类加载器深入理解

时间:2017-10-25 14:12:32  作者:admin  来源:加载器  浏览:199  评论:0
内容摘要:  首先回顾一下,java虚拟机载入java类的步骤:java文件经过编译器编译后变成字节码文件(.class文件),类加载器(ClassLoader)读取.class文件,并且转换成g.Class的一个实例,最后通过newInstance方法创建该类的一个对象。ClassLoader的作用就是根据...

  首先回顾一下,java虚拟机载入java类的步骤:java文件经过编译器编译后变成字节码文件(.class文件),类加载器 (ClassLoader)读取.class文件,并且转换成g.Class的一个实例,最后通过newInstance方法创建该类的 一个对象。ClassLoader的作用就是根据一个类名,找到对应的字节码,根据这些字节码定义出对应的类,该类就是java.lang.Class的 一个实例。

  它是最原始的类加载器,并不是由java代码写的,是由原生代码编写的。Java有一次编译、所有平台运行的效果,就是因为它写了一份功能相同,但针对不同平台不同语言实现的底层代码。它负责加载java核心库,大家可运行以下代码,看看自己本地的java核心库在哪里:

  它用于加载classpath目录下的jar包,我们写的java类,一般都是由它加载,除非你自己制定个人的类加载器。

  classloader加载类时,使用全盘负责委托机制,可以分开两部分理解:全盘负责,委托。

  全盘负责机制:若类A调用了类B,则类B和类B所引入的所有jar包,都由类A的类加载器统一加载。

  委托机制:类加载器在加载类A时,会优先让父加载器加载,当父加载器加载不到,再找父父加载器,一直找到bootstrap classloader都找不到,才自己去相关的径去寻找加载。以下是ClassLoader的源码:

  2,判断当前加载器是否有父加载器,若无,则当前为ext classloader,跳去4;否则下一步

  3,请求父加载器加载该类,若加载成功,跳7;若不成功,即父加载器不能找到该类,跳2

  Java加载类的过程,实质上是调用loadClass()方法,loadClass中调用findLoadedClass()方法来检查该类是否 已经被加载过,如果没有就会调用父加载器的loadClass(),如果父加载器无法加载该类,就调用findClass()来查找该类。

  本人写了一个demo,用自己的类加载器去加载指定java文件,且带有热部署效果,具体请查看以下url。

  每日头条、业界资讯、热点资讯、爆料,全天微博播报。各种爆料、内幕、花边、资讯一网打尽。百万互联网粉丝互动参与,TechWeb微博期待您的关注。

  对于想换机的用户来说,本周五的确是个难忘的日子,因为iPhone X将预售,鉴于这款...

  一加年底前有望推出的一加5T新机的配置近日被GizChina.it。...

  谷歌和LG相继放弃了模块化手机的研发,不过摩托罗拉依然还在。就在今天,它们正式...

  据SK海力士(SK Hynix)今日发布的一份声明显示,收购东芝芯片业务部门后,贝恩资本(Bai...

  监管文件显示,科斯罗萨西周四通知纽约时报公司董事会,他将因为出任Uber的新职位而卸...

  一名美国已责令进行一项新的审判,目的是判定三星应因其抄袭苹果公司iPhone外观设...

  WPS Office是金山公司开发的一款国产办公软件,虽然历史甚至比Office更久远,但不可否...

  张良的技能营造出的敌我交互过程有些过于了。承担主要输出功能的2技能,,......

  皇家狮鹫季,炸裂福利强势登场!经典坐骑皇家狮鹫专属坐骑配饰--艳阳羽冠震撼登场......

  《绝地大逃杀》中的四排是需要有一些战术策略的,这样团队合作才能发挥出较好的效......


相关评论