首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

VM的加载的过程是通过引导加载

加载过程 JVM的加载的过程是通过引导加载器(bootstrap class loader)创建一个初始(initial class)来完成的,这个是由JVM的具体实现指定的。...加载阶段我们可以用自定义加载器去控制字节流的获取方式,是非数组的可控性最强的阶段,而数组类型不通过加载器创建,它由 Java 虚拟机直接创建。 关于加载器是什么,后文再聊。...当需要调用一个的方法的时候,只要知道这个方法方法表的偏移量就可以直接调用该方法了。 通过解析操作符号引用就可以直接转变为目标方法中方法表的位置,从而使得方法可以被调用。...系统加载协同工作的时候会默认使用 双亲委派模型 。 双亲委派模型的理论很简单,分为如下几步: 即在加载的时候,系统会首先判断当前是否被加载过。...如果我们不想打破双亲委派模型,就重写 ClassLoader 的 findClass() 方法即可,无法被父加载加载最终会通过这个方法被加载

67530
您找到你想要的搜索结果了吗?
是的
没有找到

Java Tomcat 是如何加载的?

比如JVM启动时,会通过不同的加载加载不同的。当用户自己的代码,需要某些额外的时,再通过加载机制加载到JVM,并且存放一段时间,便于频繁使用。...因此使用哪种类加载器、什么位置加载都是JVM重要的知识。 二、JVM加载 JVM加载采用:父委托机制,如下图所示: ?...三、Tomcat加载 Tomcat加载稍有不同,如下图: ?...WEB-INF/lib中加载 5、使用common加载CATALINA_HOME/lib中加载 四、问题扩展 通过对上面Tomcat加载机制的理解,就不难明白 为什么Java文件放在Eclipse...通过这样,我们就可以简单的把Java文件放置src文件夹通过对该Java文件的修改以及调试,便于学习拥有源码Java文件、却没有打包成xxx-source的jar包。

2.4K20

Java加载

在上一篇加载我们介绍了一个加载到内存要分为7个步骤。其中第一步就是加载也就是通过的全限定名来获取的二进制字节流。...Java把上述加载的过程定义了一个模块叫做加载器,目的是可以让用户自己决定如何加载一个加载器虽然只是实现加载动作,但它在Java起到的作用却远远要比加载的功能要重要的多。...用户也可以直接使用应用程序加载器。通过下面的方式即可获取一个应用程序加载器。...加载规定除了最顶层的启动加载器外,其它的所有加载器都必须有自己的父加载器。...因为Java虚拟机只把彼此访问的特殊权限授予同一个加载加载到同一个包的类型。

51120

Scala篇】--ScalaTrait、模式匹配、样例、Actor模型

一、前述 Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大。 模式匹配机制相当于java的switch-case。...使用了case关键字的定义就是样例(case classes),样例是种特殊的。 Actor相当于Java的多线程。...一般情况下Scala可以继承多个Trait,从结果来看就是实现了多重继承。Trait(特征) 定义的方式与类似,但它使用的关键字是 trait。...2、举例:trait带属性带方法实现 继承的多个trait如果有同名的方法和属性,必须要在中使用“override”重新定义。 trait不可以传参。...Actors分享状态,每个Actors有自己的世界观,当需要和其他Actors交互时,通过发送事件和消息,发送是异步的,非堵塞的(fire-andforget),发送消息后不必等另外Actors回复,也不必暂停

69720

scala的伴生和伴生对象

伴生和伴生对象 设计初衷 由于static定义的和对象破坏了 面向对象编程的规范完整性,因此scala 设计之初就没有static关键字概念,相关的静态属性都放在伴生对象object。...简单理解:object就是java的static部分,定义的是静态属性。...其中伴生和伴生对象需要同名。 Scala里,和伴生对象之间没有界限——它们可以互相访问彼此的private字段和private方法。...创建语法 伴生对象的属性可以直接使用名进行调用;伴生的属性,需要先实例化对象,才能够进行调用。 没有class,只有object则是单例模式。...scala伴生&伴生对象的语法如下: class AssociatedDemo { val a:Int = 10; var b:Int = 2; } object AssociatedDemo

78300

JVM加载的时机

本文主要记录下加载过程,一个加载到内存开始到被卸载的整个生命周期作为java程序员来说应该还是要清楚的。...的生命周期   加载到内存到卸载的整个过程中经历了如下的过程: ?   ...666 通过数组定义来引用,不会触发的初始化   案例直接用1结构 /** * 测试 * @author 波波烤鸭 * @email dengpbs@163.com * */ public...接口的加载过程和加载过程步骤上是一致的,但是稍有不同的是上面的例子都是用静态语句块“static{}”来输出初始化信息的,接口中不能使用“static{}”静态语句块。...还有一个不同是:当一个初始化的时候,要求其父全部都已经初始化过了,但是一个接口初始化的时候,不要求其父接口都初始化过,只有真正使用到父接口的时候(例如:引用父接口中定义的常量)才会初始化。

44540

JVM加载

加载器   把加载阶段的"通过一个的全限定名来获取描述此类的二进制字节流"这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的,实现这个动作的代码模块称为加载器。...自定义加载器   现在有个需求项目中我们需要加载一个特定目录下的class文件【c:\tools\myClassLoader】,这时我们需要自己来定义特定的加载器。...双亲委派模型   通过ClassLoader的loadClass方法我们发现加载器加的时候有既定的原则,而且系统提供的加载器好像也不止一个,我们就来说下这块。...系统给我们提供了三个加载器,如下 序号 加载 说明 1 启动加载器Bootstrap ClassLoader 加载 \lib目录下或-Xbootclasspath指定路径下能被虚拟机识别的加载到虚拟机...,它首先不会自己去尝试加载这个,而是把这个请求委派给父加载器完成,每一个层次的加载器都是如果,因此所有的加载请求最终都应该传递到顶层的启动加载 当父加载器反馈无法加载该类时(搜索范围没有找到所需的

44660

JVM加载的过程

前面看了加载的时机,本文来记录下加载的过程,也就是加载的每个阶段都做了哪些事情 的生命周期 ?...加载   "加载"是加载过程的一个阶段,在这个阶段虚拟机做了3件事 通过一个的全限定名获取定义此类的二进制流 通过这个字节流所代表的静态存储结构转化为方法区的运行时数据结构 在内存中生成一个代表这个的...java语言规范要做 a.这个是否有父 b.这个的父是否继承了不允许继承的(final修饰) c.非抽象,是否实现了父及接口中的所有的抽象方法 d.字段,方法是否和父产生矛盾...… 字节码验证   本阶段是最复杂的阶段,通过数据流和控制流分析确定程序语义是否合法和符合逻辑。...接口的实现初始化的时候一样不会执行方法 同一个只会被加载一次,/()方法也只会执行一次,如果多线程环境只会有一个线程执行方法,其他线程需要等待其执行完成。

50530

PHP的自动加载

PHP的自动加载 之前,我们已经学习过Composer自动加载的原理,其实就是利用了PHP自动加载的特性。文末有该系列文章的链接。...PHP的自动加载主要依靠的是__autoload()和spl_autoload_register()这两个方法。今天我们就来简单的看一下这两个方法的使用。...我们__autoload()方法只需要去include这个所在的文件即可。 spl_autoload_register() 这个方法目前已经替代了上述魔术方法自动加载的功能。...这样,你就不需要将所有加载代码都写在一个__autoload()方法,而是可以使用多个spl_autoload_register()去单独进行每个加载处理。...所以并不需要关心会有文件重复加载的问题。而且大型框架中使用composer的时候会加载非常多的,_once方法也会带来效率的问题。

1.2K10

JVM的特性,通过代码来揭秘加载

首先,在编译器里面,将.java的文件编译为.class文件,再通过加载器ClassLoader加载到内存里面(运行时数据区),之后通过执行器调用被本地方法接口,再去调用本地方法库,最后打印出结果:...打印出来了这个东西,这又是什么呢,还是不明白加载器到底执行了什么过程啊? 不着急,继续往下看。 我们用一条指令,看一下加载器的过程到底有些什么过程,我们借助一下JDK的一些工具去分析它。...不难发现,整个加载过程,只有rt.jar这个jar包,没有其他的jar包 我们再来看到最后 ? 这是啥?这是我们刚刚打印的那段话,还记不记得。 ?...来看一下自定义加载器: tomcat里面也有加载器的,lib路径里的catalina.jar包。 ? 加载关系: ? tomcat就属于自定义加载器。...加载的时候,排除其他程序加载这个 ? 从这个里面拿出来看一下是否已经被加载了 ? 这两行代码注定了这个只能被加载一次。 双亲委派保证了父加载的就不给子类加载

36830

Java加载器的分析与理解!详细解析加载过程

: 假如中有这样的语句: private static int a = 10 , 该语句的执行过程如下: 首先字节码文件加载到内存 进行链接的验证步骤 验证通过后进行准备步骤,给a分配内存 因为变量...JVM启动时标明的启动时,即文件名和名相同的 的初始化步骤 如果这个还没有被加载和链接,就首先进行装载和链接 如果这个存在直接父,并且这个还没有被初始化(一个加载,只能初始化一次...堆区创建一个这个的java.lang.Class对象,用来封装方法区的对象 加载最终生成位于堆区的Class对象 Class对象封装了方法区内的数据结构 Class对象提供了访问方法区内的数据结构的接口...加载方式 从本地系统直接加载 通过网络下载.class文件 从zip, jar等归档文件中加载.class文件 从专有数据库中提取.class文件 将Java源文件动态编译为.class文件,比如服务器...加载器 Java的加载通过ClassLoader及其子类来完成的 Bootstrap ClassLoader 负责加载 $JAVA_HOMEjre/lib/rt.jar里所有的class, 由

60820

tomcat学习|tomcat加载

java里面的加载器 我们写java代码时,源文件是 *.java , 然后经过编译之后,会变成 .class 文件,加载加载的,实际上就是.class文件, 实际开发,我们会把相关的 ....tomcat加载器 总共有四种加载器: Common Class Loader, Catalina Class Loader , Shared Class Loader, Web AppClass...Loader. tomcat各个加载器初始化,声明的地方 /** * 初始化tomcat的三大加载器 */ private void initClassLoaders...web应用,WEB-INFO/libs 这个目录下的jar(如我们应用引用的spring , mybatis 这些包) 这个做的好处是,不同的web应用包不会冲突,如A应用用的是spring 4....X , B应用用的是spring 5.X , 他们可以同一个tomcat运行

77820

客快物流大数据项目(五十三):实时ETL模块开发准备

目录 实时ETL模块开发准备 一、编写配置文件 二、创建包结构 三、编写工具加载配置文件 实时ETL模块开发准备 一、编写配置文件 公共模块的resources目录创建配置文件:config.properties...=D://apps/logistics/jars 二、​​​​​​​创建包结构 本次项目采用scala编程语言,因此创建scala目录 包名 说明 cn.it.logistics.etl.realtime...实时ETL程序所在包 cn.it.logistics.etl.parser Canal和Ogg数据解析所在包 三、编写工具加载配置文件 实现步骤: 公共模块的scala目录下common包下创建...Configure  单例对象 编写代码 使用 ResourceBundle.getBundle 获取配置对象 调用config.getString方法加载 config.properties...配置 添加一个 main 方法测试,工具是否能够正确读取出配置项 参考代码: package cn.it.logistics.common import java.util.

45131

JAVA内容的先后加载顺序

静态代码块 静态代码块加载的时候执行,并且只执行一次,它的优先级是最高的,构造代码块和构造函数和main方法之前。如果有多个静态代码块,按代码编写的顺序执行。...静态代码块只能在里,不能在方法里,对于静态方法:加载的时候,静态方法也已经加载了,但是我们必须要通过名或者对象名才能访问,也就是说相比于静态代码块,静态代码块是主动运行的,而静态方法是被动运行的...构造函数        (1)构造函数的命名必须和名完全相同。java普通函数可以和构造函数同名,但是必须带有返回值;   (2)构造函数的功能主要用于的对象创建时定义初始化的状态。...(3)构造函数不能被直接调用,必须通过new运算符创建对象时才会自动调用;而一般的方法是程序执行到它的时候被调用的;   (4)默认先调用父的无参构造函数 d....普通代码块 普通代码块是方法体定义的。且普通代码块的执行顺序和书写顺序一致。 2. 实例化的执行顺序 a.

56530

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券