java类加载的搜索顺序_Java类加载器加载类顺序

java ClassLoader的学习

java是一门解释执行的语言,由开发人员编写好的java源文件先编译成字节码文件.class形式,然后由java虚拟机(JVM)解释执 行,.class字节码文件本身是平台无关的,但是jvm却不是,为了实现所谓的一次编译,到处执行,sun提供了各个平台的JVM实现--也就是说 jvm不是跨平台的,编译好的字节码文件被放在不同的操作系统平台上的jvm所解释执行,这个章节主要解释一下JVM装载类的机制

1.ClassLoader是个毛东东?

一个类如果要被JVM所调度执行,必须先把这个类加载到JVM内存里,java.lang下有个很重要的类ClassLoader,这个类主要就是用来把指定名称(指定路径下)的类加载到JVM中

2.ClassLoader的分类

主要分4类,见下图橙色部分

JVM类加载器:这个模式会加载JAVA_HOME/lib下的jar包

扩展类加载器:会加载JAVA_HOME/lib/ext下的jar包

系统类加载器:这个会去加载指定了classpath参数指定的jar文件

用户自定义类加载器:sun提供的ClassLoader是可以被继承的,允许用户自己实现类加载器

类加载器的加载顺序如图所示:

8467571_1301467374FsD8.png

3.类加载顺序

JVM并不是把所有的类一次性全部加载到JVM中的,也不是每次用到一个类的时候都去查找,对于JVM级别的类加载器在启动时就会把默认的 JAVA_HOME/lib里的class文件加载到JVM中,因为这些是系统常用的类,对于其他的第三方类,则采用用到时就去找,找到了就缓存起来的, 下次再用到这个类的时候就可以直接用缓存起来的类对象了,ClassLoader之间也是有父子关系的,没个ClassLoader都有一个父 ClassLoader,在加载类时ClassLoader与其父ClassLoader的查找顺序如下图所示

8467571_1301467182EPWz.png

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

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

相关文章

HTTP 必备干货学习,一篇HTTP入门 不收藏都可惜!

文章目录📢前言HTTP 必备干货学习,程序员不懂网络怎么行HTTP 协议五个特点:网络结构图解HTTP概述🏳️‍🌈基于 HTTP 的系统的组件客户端:用户代理网络服务器代理HTTP 的基本方面HTTP 很简单HTTP 是可扩展的…

在别人发来的文章上修改时,出现红色且带下划线的情况

这是因为一些比较严谨的机构将模板发过来在你修改的时候会出现特殊标记(比如律师行业) 这里想要直接在他的文档上进行修改,需要取消掉原来的修订配置 再次输入格式消失

java抽象类重载_在JAVA中使用一个抽象方法的重载方法

给出一个抽象类public abstract class AbstractStomach {public abstract void consume(Food food);}我想要一些具有不同重载方法的具体类:public class FruitStomach extends AbstractStomach {public static class Apple extends Food {}public static class Oran…

java in out 参数_总是避免Java中的in-out参数?

毫无疑问,输入输出参数会导致代码混乱,因为它们可能会增加意外/不可预测的副作用.所以,许多优秀的程序员说:避免使用in-out参数来更改可变方法参数.希望保持参数不变.对于一个完美主义程序员来说,他希望他的代码是最干净和最容易理解的,那么这个"规则"是否必须适用于…

谈Servlet与JSP

文章目录前言正文1、什么是JSP?2、什么是Servlet?3、JSP与Servlet的区别和联系4、扬长弊端提出MVC前言 提高Java Web 开发,不得不说http协议,接下来就说Servlet 和 Jsp 这两个java类。 正文 1、什么是JSP? JSP(Java Server Pages)是Sun…

java 记事本编译_肿么用记事本编译运行java程序代码?

确认已经正确安装JDK。(cmd->输入javac,然后回车,出现一堆东西,下面的东西)C:\Users\lenovo>javac用法: javac 其中, 可能的选项包括:-g 生成所有调试信息-g:none 不生成任何调试信息-g:{lines,vars,source} 只生成某些调试信息-nowarn…

Jsp和Servlet有什么区别?

文章目录什么是Servlet?为什么要用到Servlet?什么是JSP为什么需要JSPJSP的工作原理什么是Servlet? Servlet其实就是一个遵循Servlet开发的java类。Servlet是由服务器调用的,运行在服务器端。 为什么要用到Servlet? …

hdfs java api 权限_HDFS Java API 详解

Hadoop版本: Hadoop 2.6.0连接HDFSString URL"hdfs://hadoop001:9000";Configuration conf new Configuration();conf.set("fs.defaultFS", URL);FileSystem fs FileSystem.get(conf);上传文件到HDFS//获取本地文件的输入流FileInputStream …

Tomcat就是这么简单

什么是Tomcat Tomcat简单的说就是一个运行JAVA的网络服务器,底层是Socket的一个程序,它也是JSP和Serlvet的一个容器。 为什么我们需要用到Tomcat 如果你学过html,css,你会知道你写的页面只能自己访问,别人不能远程访…

java if两个条件_java(3) if结构

一、基本if结构1、流程图1)输入输出2)判断和分支3) 流程线1.1 简单的if条件判断if(表达式){//表达式为true,执行{}中的代码}示例1:如果张三的Java成绩大于98分,那么老师奖励他一个MP4。1 public classPractice1 {2 pu…

Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】

什么是Servlet? Servlet其实就是一个遵循Servlet开发的java类。Servlet是由服务器调用的,运行在服务器端。 为什么要用到Servlet? 我们编写java程序想要在网上实现 聊天、发帖、这样一些的交互功能,普通的java技术是非常难完成…

java kafka 分区_Java kafka如何实现自定义分区类和拦截器

生产者发送到对应的分区有以下几种方式:(1)指定了patition,则直接使用;(可以查阅对应的java api, 有多种参数)(2)未指定patition但指定key,通过对key的value进行hash出一个patition;(3)patition和key都未指定&#xff…

Servlet第三篇【request和response简介、response的常见应用】

response、request对象 Tomcat收到客户端的http请求,会针对每一次请求,分别创建一个代表请求的request对象、和代表响应的response对象 既然request对象代表http请求,那么我们获取浏览器提交过来的数据,找request对象即可。respon…

strip string java_Java StringUtils.strip方法代码示例

import org.apache.commons.lang.StringUtils; //导入方法依赖的package包/类public static void copyResourceFolder(String resourceFolder, String destDir)throws IOException {final File jarFile new File(Util.class.getProtectionDomain().getCodeSource().getLocatio…

spring三种注入方式

设置Spring的作用域 或者使用枚举值设置 单例和多里使用场景 自动注入 Primary 一个接口有多个实现被spring管理吗,在依赖注入式,spring会不知道注入哪个实现类就会抛出NoUniqueBeanDefinitionException异常 使用Primary 来告诉Spring 注入哪个实现…

java虚拟机1.7_《Java虚拟机原理》7.1 精选 —— 总览

1.一个程序在 JVM 中运行的完整流程java程序执行流程.JPG说明:① 类加载器把字节码加载到方法区② 方法区的字节码被 JVM new,在堆内存中生成字节码对象③ 字节码对象被 GC 的要求有:该类没有在其他任何地方被引用;该类的所有的实…

Servlet第四篇【request对象常用方法、应用】

什么是HttpServletRequest HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息。 简单来说,要…

java 设置控制台标题_修改Tomcat控制台标题以及标题乱码处理

双击“startup.bat”启动Tomcat,控制台默认标题是Tomcat,如下图:修改标题很容易,编辑catalina.bat这个文件(跟startup.bat在同级目录下),编辑的时候建议使用notepad、editplus之类的工具。然后找到如下代码片段(大约在…

Servlet第五篇【介绍会话技术、Cookie的API、详解、应用】

什么是会话技术 基本概念: 指用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话. 为什么我们要使用会话技术&#xff1…

mysql 视图sql_SQL的视图

1、什么是视图视图是虚拟的表,是一个存储的查询,虽然不需要实际的物理存储,但是也被看作是一个数据库对象;它与包含数据的表不一样,它不包含任何列或数据,它只是包含使用时动态检索数据的查询,并…