Java基础——类加载机制

什么叫类加载

    JVM把 .class 字节码文件加载到内存,并进行相关的校验、解析、初始化,最终转换为虚拟机可用的JAVA类型的过程,称为JVM类加载机制。

  (当然,JVM并不关心class文件的来源,什么?什么叫class文件?——每一个Java class文件都对一个Java类或者Java接口做出了全面描述)

  类加载器的分类 

  启动(Bootstrap)类加载器:引导类装入器是用本地代码实现的类装入器,它负责将 <Java_Runtime_Home>/lib下面的核心类库或-Xbootclasspath选项指定的jar包加载到内存中。由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作。(也叫根加载器)

  扩展(Extension)类加载器:扩展类加载器是由Sun的ExtClassLoader(sun.misc.Launcher$ExtClassLoader)实现的。它负责将< Java_Runtime_Home >/lib/ext或者由系统变量-Djava.ext.dir指定位置中的类库加载到内存中。开发者可以直接使用标准扩展类加载器。

  系统(System)类加载器:系统类加载器是由 Sun的 AppClassLoader(sun.misc.Launcher$AppClassLoader)实现的。它负责将系统类路径java -classpath或-Djava.class.path变量所指的目录下的类库加载到内存中。开发者可以直接使用系统类加载器。

  这三个类加载器还分阶级
    3的领导是2 2的领导是1 1就是BOSS

  双亲委派模型

  双亲委派模型的工作过程为:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的加载器都是如此,因此所有的类加载请求都会传给顶层的启动类加载器,只有当父加载器反馈自己无法完成该加载请求(该加载器的搜索范围中没有找到对应的类)时,子加载器才会尝试自己去加载

转载于:https://www.cnblogs.com/zhuangwei1015/p/10010025.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412763.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis集群搭建【简版】

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享一下redis集群安装&#xff0c;写的比较简单&#xff0c;就是做个记录。 1. 下载&安装 wget http://download.redis.io/releases/redis-5.0.4.tar.gz tar -zxvf redis-5.0.4.tar.gz 解压并编译 https://redis.io/ 2.…

[css] 说说你对设备像素比的理解

[css] 说说你对设备像素比的理解 DPR 物理像素与逻辑像素的比个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

x-shell 通过堡垒机连接 ssh多个机器 自动化脚本

大家好&#xff0c;我是烤鸭&#xff1a; 1. 连接vpn 这一步就没什么说的了。我们用的easyconnect。登录后弹出堡垒机页面。 easyconnect 官网&#xff1a;https://sslvpn.zjweu.edu.cn/com/installClient.html 2. 登录堡垒机账号 登录堡垒机之后&#xff0c;如图&#xff…

Python 创建和使用类

python创建和使用类的方法如下 # class Dog(): # def __init__(self,name,age): # self.namename # self.ageage # # def sit(self): # print(self.name.title()"is now sitting") # # def roll_over(self): # print(se…

[css] 说下你对cursor属性的理解

[css] 说下你对cursor属性的理解 cursor 是鼠标光标的属性。可以给元素设置不同的cursor属性来使鼠标在不同的位置显示不同的形状。 值 描述 url 需使用的自定义光标的 URL。注释&#xff1a;请在此列表的末端始终定义一种普通的光标&#xff0c;以防没有由 URL 定义的可用光标…

mybatis 执行插入操作,insert 返回1,数据库中无数据。数据库中数据的创建时间和插入执行时间不一致。

大家好&#xff0c;我是烤鸭&#xff1a; 今天记录一下线上的问题&#xff0c;由于不是我们组的代码&#xff0c;所以没参与全程&#xff0c;只是最后有幸听各位大佬探讨解决方案。mybatis 执行插入操作&#xff0c;insert返回1&#xff0c;日志记录和接口返回都正常&#xff0…

敏捷软件开发学习笔记(四)之结构型设计模式

PHP结构型设计模式 参考 设计模式PHP 设计模式全集 2018什么是结构型是设计模式 结构型模式讲的是如何将类和对象按照某种布局组成更大的结构。它分为类结构型模式和对象结构型模式&#xff0c;其中类结构型模式采用继承机制来组织接口和类&#xff0c;其中对象结构型模式采用组…

[css] position的relative和absolute定位原点是哪里?

[css] position的relative和absolute定位原点是哪里&#xff1f; absolute: 定位原点为第一个position不为static的父级元素的左上角。 可以基于该特性实现height:100%生效 relative&#xff1a;定位原点为元素本身的所在位置。 relative的偏移量设置会导致显示效果和定位原点…

javax.mail.MessagingException: while sending message;Connection reset by peer: socket write error

大家好&#xff0c;我是烤鸭&#xff1a; 阿里云邮件推送服务报错。当你也使用阿里云的邮件推送服务提示上面这个错误的话&#xff0c;我先告诉你原因和目前能想到的解决方案。 解决思路&#xff1a; 1. 换企业邮箱&#xff0c;阿里的上限15M&#xff0c;网易的不知道&…

李晓菁201771010114《面向对象程序设计(java)》第十三周学习总结

理论知识&#xff1a;事件处理 1.事件源&#xff1a;能够产生事件的对象都可以成为事件源&#xff0c;如文本框&#xff0c;按钮等。一个事件源是一个能够注册监听器并向监听器发送事件对象的对象。 2.事件监听器&#xff1a;事件监听器对象接收事件源发送的通告&#xff08;事…

[css] 过渡和动画的区别是什么?

[css] 过渡和动画的区别是什么&#xff1f; 相同&#xff1a;都会让你的页面元素动起来 区别&#xff1a; 过渡 transition1.需要事件触发&#xff0c;比如hover&#xff0c;focus&#xff0c;checked , js改, media query 2.一次性的 3.只能定义开始和结束状态&#xff0c;不…

记一次 OOM 的原因和处理 出现大量 close_wait,项目无法访问 activeMq和 poi 出现的 OOM

大家好&#xff0c;我是烤鸭: 记一次项目无法访问的事件和处理。由于某个模块每隔几天就会出现无法访问&#xff0c;目前的最简单粗暴的方法就是重启。 1. 现象 项目内日志打印正常&#xff0c;经过dubbo的rpc服务和接口调用正常。http接口无法访问。提示nginx 502。 2.…

docker删除镜像和删除容器

删除容器&#xff1a;docker rm ID 删除镜像&#xff1a;docker rmi ID转载于:https://www.cnblogs.com/61355ing/p/10018498.html

[css] CSS中的calc()有什么作用?

[css] CSS中的calc()有什么作用&#xff1f; 用来计算长宽的属性,非常好用,百分比,px,vh/vm都可参与计算, 不过正如上面的大兄弟说的,运算符的左右要有空格,要不然不生效个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。…

fastjson导致的OOM

大家好&#xff0c;我是烤鸭&#xff1a; 今天又遇到OOM了,原因在于 fastjson 的 toJSONString。 这是线上的报错信息。 将这个 TotalLoanDTO 对象 toJSONString 导致的OOM。日志如下。 2019-10-31 12:07:49.896 [TID:285.93.15724948639339801] [XNIO-1 task-14] INFO [cla…

谷歌浏览器中安装JsonView扩展程序

实际开发工作中经常用到json数据&#xff0c;那么就会有这样一个需求&#xff1a;在谷歌浏览器中访问URL地址返回的json数据能否按照json格式展现出来。 比如&#xff0c;在谷歌浏览器中访问&#xff1a;http://jsonview.com/example.json 展现效果如下&#xff1a; 那么安装了…

[css] 怎么实现移动端的边框0.5px?

[css] 怎么实现移动端的边框0.5px&#xff1f; 一种是通过transform中的scaleborder: 1px solid red;transform: scaleY(.5);一种是通过meta viewport中设置init-scale为0.5 <meta name"viewport" content"widthdevice-width, initial-scale0.5"> 一…

Serialized class com.xxx.xxxService must implement java.io.Serializable

大家好&#xff0c;我是烤鸭&#xff1a; 使用dubbo的时候&#xff0c;遇到如下的问题。 Serialized class com.xxx.xxxService must implement java.io.Serializable 1. 异常 dubbo无论使用哪个协议传递参数的时候&#xff0c;都需要参数实现序列化接口。 所以提示这个…

CS229 7.1应用机器学习中的一些技巧

本文所讲述的是怎么样去在实践中更好的应用机器学习算法&#xff0c;比如如下经验风险最小化问题&#xff1a; 当求解最优的 后&#xff0c;发现他的预测误差非常之大&#xff0c;接下来如何处理来使得当前的误差尽可能的小呢&#xff1f;这里给出以下几个选项&#xff0c;下面…

[css] 行内元素和块级元素有什么区别,如何相互转换?

[css] 行内元素和块级元素有什么区别&#xff0c;如何相互转换&#xff1f; 一般通过display属性来区分块级元素和行内元素&#xff0c;block代表块级元素&#xff0c;inline代表行内元素。 块级元素&#xff1a; 1、内容独占一行。 2、width和height可以设置。 3、margin和pa…