摘要:学习能更深入的理解这门语言,能理解语言底层的执行过程,深入到字节码层次。
目录
①一般在什么情况下会去加载一个类?也就是说,什么时候“.class”字节码文件中加载这个类到JVM内存里来?
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,
它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
学习JVM能更深入的理解Java这门语言,能理解Java语言底层的执行过程,深入到字节码层次。
从本篇文章开始,我将带领大家先把JVM运行机制的整体脉络梳理清楚,然后不断的深入学习。
另外,本系列的更新进度一定会各位满意,因为我也即将进入急速成长状态,我们一起加油!
我们知道“.java”代码文件,编译成“.class”字节码文件,然后类加载器把“.class”字节码文件中的类给加载到JVM中,JVM就会基于自己的字节码执行引擎,来执行加载到内存里的我们写好类。那类的加载机制是怎么样的呢?类加载器和双亲委派机制又是什么呢?
其实一个类从加载到使用要经过:加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 使用 -> 卸载
答:代码中用到这个类的时候。
答:验证是校验你加载进来的“.class”文件,是否符合指定的规范,而准备是给验证后的类分配一定的内存空间、给里面的类(静态)变量(也就是static修饰的变量)分配内存空间、默认的初始值,解析阶段实际上是把符号引用替换为直接引用的过程。
答:如“new ReplicaManager()”来实例化类的对象了,此时就会触发类的加载到初始化的全过程,把这个类准备好,然后再实例化一个对象出来;(包含“main()”方法的主类,必须是立马初始化的。)
注意,如果初始化一个类的时候,发现他的父类还没初始化,那么必须先初始化他的父类
Bootstrap ClassLoader,负责加载我们在机器上安装的Java目录下的核心类
Extension ClassLoader,Java安装目录下,有一个“lib/ext”目录
这里面有一些类,就是需要使用这个类加载器来加载的,支撑你的系统的运行。
Application ClassLoader,这类加载器负责去加载环境变量所指定的路径中的类,
可以理解为去加载你写好的Java代码!
自定义类加载器,可以根据自己的需求加载类。
JVM的类加载器是有亲子层级结构的,就是说启动类加载器是最上层的,扩展类加载器在第二层,第三层是应用程序类加载器,最后一层是自定义类加载器。也就是说,需要加载一个类时,先由最上层找,找不到就由下一层找,最后找到需要加载这个类的类加载器,然后这个加载器就自己把这个类加载到内存里去了。这就是双亲委派模型,可以避免多层级的加载器结构重复加载某些类。
给大家留一个问题:什么场景下会用到自定义类加载器呢?
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/123598.html
摘要:入门,第一个这是一门很新的语言,年前后正式公布,算起来是比较年轻的编程语言了,更重要的是它是面向程序员的函数式编程语言,它的代码运行在之上。它通过编辑类工具,带来了先进的编辑体验,增强了语言服务。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获...
摘要:入门,第一个这是一门很新的语言,年前后正式公布,算起来是比较年轻的编程语言了,更重要的是它是面向程序员的函数式编程语言,它的代码运行在之上。它通过编辑类工具,带来了先进的编辑体验,增强了语言服务。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获...
摘要:入门,第一个这是一门很新的语言,年前后正式公布,算起来是比较年轻的编程语言了,更重要的是它是面向程序员的函数式编程语言,它的代码运行在之上。它通过编辑类工具,带来了先进的编辑体验,增强了语言服务。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获...
阅读 1535·2021-11-17 09:33
阅读 1063·2021-11-12 10:36
阅读 2374·2019-08-30 15:54
阅读 2427·2019-08-30 13:14
阅读 2894·2019-08-26 14:05
阅读 3268·2019-08-26 11:32
阅读 2978·2019-08-26 10:09
阅读 2975·2019-08-26 10:09