JVM小钻风
文章平均质量分 85
越来越没意思
辉煌时刻已经结束
展开
-
尚硅谷2020最新版宋红康JVM教程-中篇-第4章:再谈类的加载器-06-08
沙箱安全机制前言沙箱安全机制 保证程序安全 保护Java原生的JDK代码 Java安全模型的核心就是Java沙箱(sandbox)。什么是沙箱?沙箱是一个限制程序运行的环境。 沙箱机制就是将Java代码限定在虚拟机(JVM)特定的运行范围中,并且严格限制代码对本地系统资源访问。通过这样的措施来保证对代码的有限隔离,防止对本地系统造成破坏。 沙箱主要限制系统资源访问,那系统资源包括什么?CPU、内存、文件系统、网络。不同级别的沙箱对这些资源访问的限制也可以不一样。 所有的Java程序转载 2021-06-08 00:03:57 · 79 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第4章:再谈类的加载器-05-双亲委派模型
定义与本质类加载器用来把类加载到Java虚拟机中。从JDK1.2版本开始,类的加载过程采用双亲委派机制,这种机制能更好地保证Java平台的安全。定义如果一个类加载器在接到加载类的请求时,它首先不会自己尝试去加载这个类,而是把这个请求任务委托给父类加载器去完成,依次递归,如果父类加载器可以完成类加载任务,就成功返回。只有父类加载器无法完成此加载任务时,才自己去加载。本质规定了类加载的顺序是:引导类加载器先加载,若加载不到,由扩展类加载器加载,若还加载不到,才会由系统类加载器或自定义的类转载 2021-06-08 00:01:24 · 101 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第4章:再谈类的加载器-04-ClassLoader源码解析
引言除了以上虚拟机自带的加载器外,用户还可以定制自己的类加载器。Java提供了抽象类java.lang.ClassLoader,所有用户自定义的类加载器都应该继承ClassLoader类。关于Launcher类ClassLoader的主要方法抽象类ClassLoader的主要方法:(内部没有抽象方法)public final ClassLoader getParent() 返回该类加载器的超类加载器public Class<?> loadClass(St..转载 2021-06-08 00:01:08 · 117 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第4章:再谈类的加载器-02和03-类的加载器分类
引言JVM支持两种类型的类加载器,分别为引导类加载器(Bootstrap ClassLoader)和自定义类加载器(User-Defined ClassLoader)。 从概念上来讲,自定义类加载器一般指的是程序中由开发人员自定义的一类类加载器,但是Java虚拟机规范却没有这么定义,而是将所有派生于抽象类ClassLoader的类加载器都划分为自定义类加载器。无论类加载器的类型如何划分,在程序中我们最常见的类加载器结构主要是如下情况:只有引导类加载器(Bootstrap ClassLoader转载 2021-06-08 00:00:03 · 119 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第4章:再谈类的加载器-01-概述
引言类加载器是JVM执行类加载机制的前提。 ClassLoader的作用:ClassLoader是Java的核心组件,所有的Class都是由ClassLoader进行加载的,ClassLoader负责通过各种方式将Class信息的二进制数据流读入JVM内部,转换为一个与目标类对应的java.lang.Class对象实例。然后交给Java虚拟机进行链接、初始化等操作。因此,ClassLoader在整个装载阶段,只能影响到类的加载,而无法通过ClassLoader去改变类的链接和初始化行为。至于它是否可以转载 2021-06-07 23:47:46 · 110 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第3章类的加载过程(类的生命周期)详解-5和6-类的使用和卸载
过程四:类的Using(使用)任何一个类型在使用之前都必须经历过完整的加载、链接和初始化3个类加载步骤。一旦一个类型成功经历过这3个步骤之后,便“厉事俱备只欠东风”,就等着开发者使用了。 开发人员可以在程序中访问和调用它的静态类成员信息(比如:静态字段、静态方法),或者使用new关键字为其创建对象实例。过程五:类的Unloading(卸载)类、类的加载器、类的实例之间的引用关系在类加载器的内部实现中,用一个Java集合来存放所加载类的引用。另一方面,一个Class对象总是会引用它的类加载器,转载 2021-06-07 23:46:34 · 97 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第3章类的加载过程(类的生命周期)详解-4-过程三:Initialization(初始化)阶段
static与final的搭配问题初始化阶段,简言之,为类的静态变量赋予正确的初始值。具体描述类的初始化是类装载的最后一个阶段。如果前面的步骤都没有问题,那么表示类可以顺利装载到系统中。此时,类才会开始执行Java字节码。(即:到了初始化阶段,才真正开始执行类中定义的Java程序代码。) 初始化阶段的重要工作是执行类的初始化方法:<clinit>()方法。 该方法仅能由Java编译器生成并由JVM调用,程序开发者无法自定义一个同名的方法,更无法直接在Java程序中调用该方法,虽然转载 2021-06-07 23:45:34 · 123 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第3章类的加载过程(类的生命周期)详解-3-过程二:Linking(链接)阶段
环节1:链接阶段之Verification(验证)当类加载到系统后,就开始链接操作,验证是链接操作的第一步。 它的目的是保证加载的字节码是合法、合理并符合规范的。 验证的步骤比较复杂,实际要验证的项目也很繁多,大体上Java虚拟机需要做以下检查,如图所示。整体说明:验证的内容则涵盖了类数据信息的格式验证、语义检查、字节码验证,以及符号引用验证等。 其中格式验证会和加载阶段一起执行。验证通过之后,类加载器才会成功将类的二进制数据信息加载到方法区中。 格式验证之外的验证操作将会在方法区中进行转载 2021-06-07 23:43:52 · 126 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第3章类的加载过程(类的生命周期)详解-2-过程一:Loading(加载)阶段
加载完成的操作加载的理解所谓加载,简而言之就是将Java类的字节码文件加载到机器内存中,并在内存中构建出Java类的原型——类模板对象。所谓类模板对象,其实就是Java类在]VM内存中的一个快照,JVM将从字节码文件中解析出的常量池、类字段、类方法等信息存储到类模板中,这样]VM在运行期便能通过类模板而获取Java类中的任意信息,能够对Java类的成员变量进行遍历,也能进行Java方法的调用。 反射的机制即基于这一基础。如果JVM没有将Java类的声明信息存储起来,则JVM在运行期也无法反射。加转载 2021-06-07 23:42:51 · 126 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第3章类的加载过程(类的生命周期)详解-1-概述
引言在Java中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载。 按照Java虚拟机规范,从class文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包括如下7个阶段:其中,验证、准备、解析3个部分统称为链接(Linking)从程序中类的使用过程看:大厂面试题蚂蚁金服:描述一下JvM加载Class文件的原理机制?一面:类加载过程百度:类加载的时机java类加载过程?简述java类加载机制?腾讯:JVM中类转载 2021-06-07 23:41:42 · 114 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第2章Class文件结构-10-同步控制指令
引言java虚拟机支持两种同步结构:方法级的同步和方法内部一段指令序列的同步,这两种同步都是使用monitor来支持的。方法级的同步方法级的同步:是隐式的,即无须通过字节码指令来控制,它实现在方法调用和返回操作之中。虚拟机可以从方法常量池的方法表结构中的ACC_SYNCHRONIZED访问标志得知一个方法是否声明为同步方法; 当调用方法时,调用指令将会检查方法的ACC_SYNCHRONIZED访问标志是否设置。 如果设置了,执行线程将先持有同步锁,然后执行方法。最后在方法完成(无论是正常完成转载 2021-06-07 23:39:21 · 76 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第2章Class文件结构-9-异常处理指令
抛出异常指令athrow指令在Java程序中显示抛出异常的操作(throw语句)都是由athrow指令来实现。 除了使用throw语句显示抛出异常情况之外,JVM规范还规定了许多运行时异常会在其他Java虚拟机指令检测到异常状况时自动抛出。例如,在之前介绍的整数运算时,当除数为零时,虚拟机会在idiv或ldiv指令中抛出ArithmeticException异常。注意正常情况下,操作数栈的压入弹出都是一条条指令完成的。唯一的例外情况是在抛异常时,Java虚拟机会清除操作数栈上的所有内容,而后转载 2021-06-07 23:38:44 · 82 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第2章Class文件结构-8-控制转移指令
引言程序流程离不开条件控制,为了支持条件跳转,虚拟机提供了大量字节码指令,大体上可以分为1)比较指令、2)条件跳转指令、3)比较条件转指令、4)多条件分支跳转指令、5)无条件跳转指令等。 数值类型的数据,才可以谈大小!(byte\short\char\int;long\float\double) boolean、引用数据类型不能比较大小。条件跳转指令条件跳转指令通常和比较指令结合使用。在条件跳转指令执行前,一般可以先用比较指令进行栈顶元素的准备,然后进行条件跳转。 条件跳转指令有:ifeq,转载 2021-06-07 23:36:29 · 91 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第2章Class文件结构-7-操作数栈管理指令
如同操作一个普通数据结构中的堆栈那样,JVM提供的操作数栈管理指令,可以用于直接操作操作数栈的指令。 这类指令包括如下内容: 将一个或两个元素从栈顶弹出,并且直接废弃:pop,pop2; 复制栈顶一个或两个数值并将复制值或双份的复制值重新压入栈顶:dup,dup2,dup_×1,dup2_×1,dup_×2,dup2_×2; 将栈最顶端的两个slot数值位置交换:swap。Java虚拟机没有提供交换两个64位数据类型( long、doub1e)数值的指令。 指令nop,是一个非常特殊的指令,转载 2021-06-07 23:35:31 · 80 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第2章Class文件结构-6-方法调用与返回指令
引言方法调用指令方法调用指令:invokevirtual、invokeinterface、invokespecial、invokestatic、invokedynamic以下5条指令用于方法调用:invokevirtual指令用于调用对象的实例方法,根据对象的实际类型进行分派(虚方法分派),支持多态。这也是Java语言中最常见的方法分派方式。 invokeinterface指令用于调用接口方法,它会在运行时搜索由特定对象所实现的这个接口方法,并找出适合的方法进行调用。 invokespeci转载 2021-06-04 12:39:26 · 63 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第2章Class文件结构-5-对象的创建与访问指令
引言Java是面向对象的程序设计语言,虚拟机平台从字节码层面就对面向对象做了深层次的支。有一系列指令专门用于对象操作,可进一步细分为创建指令、字段访问指令、数组操作指令、类型检查指令。创建指令虽然类实例和数组都是对象,但Java虚拟机对类实例和数组的创建与操作使用了不同的字节码指令: 创建类实例的指令: 创建类实例的指令:new 它接收一个操作数,为指向常量池的索引,表示要创建的类型,执行完成后,将对象的引用压入栈。 创建数组的指令: 创建数组的指令:newarray、an转载 2021-06-04 12:38:10 · 97 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第2章Class文件结构-4-类型转换指令
引言类型转换指令可以将两种不同的数值类型进行相互转换。 这些转换操作一般用于实现用户代码中的显式类型转换操作,或者用来处理字节码指令集中数据类型相关指令无法与数据类型一一对应的问题。类型转换指令转换规则Java虚拟机直支持以下数值的宽化类型转换(widening numeric conversion,小范围类型向大范围类型的安全转换)。也就是说,并不需要指令执行,包括:从int类型到long、float或者double类型。对应的指令为:i2l、i2f、i2d 从long类型到floa转载 2021-06-04 12:36:48 · 80 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第2章Class文件结构-3-算术指令
引言大体上算术指令可以分为两种:对整型数据进行运算的指令与对浮点类型数据进行运算的指令。byte、short、char和boolean类型说明在每一大类中,都有针对Java虚拟机具体数据类型的专用算术指令。但没有直接支持byte、short、char和boolean类型的算术指令,对于这些数据的运算,都使用int类型的指令来处理。此外,在处理boolean、byte、short和char类型的数组时,也会转换为使用对应的int类型的字节码指令来处理。运算时的溢出数据运算可能会导致溢出,转载 2021-06-04 12:35:26 · 90 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第2章Class文件结构-2-加载和存储指令
引言作用加载和存储指令用于将数据从栈帧的局部变量表和操作数栈之间来回传递。常用指令 指令助记符 【局部变量压栈指令】将一个局部变量加载到操作数栈:xload、xload_(其中x为i、l、f、d、a,n为0到3) 【常量入栈指令】将一个常量加载到操作数栈:bipush、sipush、ldc、ldc_w、ldc2_w、aconst_null、iconst_ml、iconst、lconst_<1>、fconst、dconst 【出栈装入局部变量表指令】将一个数值从操作数转载 2021-06-04 12:33:39 · 108 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第2章Class文件结构-1-概述
引言Java字节码对于虚拟机,就好像汇编语言对于计算机,属于基本执行指令。 Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)而构成。由于Java虚拟机采用面向操作数栈而不是寄存器的结构,所以大多数的指令都不包含操作数,只有一个操作码。 由于限制了Java虚拟机操作码的长度为一个字节(即0~255),这意味着指令集的操作码总数不可能超过256条。 官方文档:https://docs.转载 2021-06-04 12:31:39 · 96 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第1章Class文件结构-3-Class文件结构
魔数:Class文件的标志友情提示:字节码的二进制文件存的是16进制官方文档位置https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.htmlClass类的本质(就是二进制流) 任何一个Class文件都对应着唯一 一个类或接口的定义信息,但反过来说,Class文件实际上它并不一定以磁盘文件的形式存在,也可能是二进制流。 Class文件是一组以8位字节为基础单位的二进制流。 Class文件格式 Class的转载 2021-06-04 12:30:00 · 326 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第1章Class文件结构-2-虚拟机的基石:Class文件
字节码文件里是什么?源代码经过编译器编译之后便会生成一个字节码文,字节码是一种二进制的类文件,它的内容是JVM的指令,而不像C、C++经由编译器直接生成机器码。什么是字节码指令(byte code)?Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码(opcode)以及跟随其后的零至多个代表此操作所需参数的操作数(operand)所构成。虚拟机中许多指令并不包含操作数,只有一个操作码。比如 操作码 操作数solt1-3是现成的,不需要额外操作数如何解读供虚拟转载 2021-06-04 12:01:50 · 95 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-中篇-第1章Class文件结构-1-字节码文件的跨平台性
字节码文件的跨平台性Java语言:跨平台的语言(write once,run anywhere)当Java源代码成功编译成字节码后,如果想在不同的平台上面运行,则无须再次编译。 这个优势不再那么吸引人了,Python、PHP、Perl、Ruby、Lisp等有强大的解释器。 跨平台似乎已经快成为一门语言必选的特性。Java虚拟机:跨语言的平台Java虚拟机不和包括Java在内的任何语言绑定,它只与“Class文件”这种特定的二进制文件格所关联。无论使用何种语言进行软件开发,只要能将源文件编译转载 2021-06-04 11:59:48 · 210 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-17-垃圾回收器
转载:https://www.bilibili.com/video/BV1PJ411n7xZ参考:https://gitee.com/moxi159753/LearningNotes/tree/master/JVM,https://www.cnblogs.com/yanl55555/p/12623447.htmlGC分类与性能指标引言垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的转载 2021-06-04 11:55:00 · 194 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-16-垃圾回收相关概念
转载:https://www.bilibili.com/video/BV1PJ411n7xZ参考:https://gitee.com/moxi159753/LearningNotes/tree/master/JVM,https://www.cnblogs.com/yanl55555/p/12623447.htmlSystem.gc()的理解引言在默认情况下,通过system.gc()者Runtime.getRuntime().gc()的调用,会显式触发FullGC,同时对老年代和新生代进转载 2021-06-02 16:06:14 · 182 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-15-垃圾回收相关算法
转载:https://www.bilibili.com/video/BV1PJ411n7xZ参考:https://gitee.com/moxi159753/LearningNotes/tree/master/JVM,https://www.cnblogs.com/yanl55555/p/12623447.html引言在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,GC才会在执行垃圾回收时转载 2021-06-02 15:36:35 · 271 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-14-垃圾回收概述
转载:https://www.bilibili.com/video/BV1PJ411n7xZ参考:https://gitee.com/moxi159753/LearningNotes/tree/master/JVM,https://www.cnblogs.com/yanl55555/p/12623447.html这次我们主要关注的是黄色部分,内存的分配与回收什么是垃圾引言 从上图我们可以很明确的知道,Java和C++语言的区别,就在于垃圾收集技术和内存动态分配上,C语言没有垃圾收集转载 2021-06-02 15:13:08 · 88 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-13-String Table
转载:https://www.bilibili.com/video/BV1PJ411n7xZ参考:https://gitee.com/moxi159753/LearningNotes/tree/master/JVM,https://www.cnblogs.com/yanl55555/p/12623447.html基本特性String的基本特性 String:字符串,使用一对 ”” 引起来表示 String s1 = "zgc" ; // 字面量的定义方式 String s2转载 2021-06-02 15:11:03 · 196 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-12-执行引擎
转载:https://www.bilibili.com/video/BV1PJ411n7xZ参考:https://gitee.com/moxi159753/LearningNotes/tree/master/JVM,https://www.cnblogs.com/yanl55555/p/12623447.html执行引擎概述执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集转载 2021-06-02 14:44:20 · 159 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-11-直接内存
转载:https://www.bilibili.com/video/BV1PJ411n7xZ参考:https://gitee.com/moxi159753/LearningNotes/tree/master/JVM,https://www.cnblogs.com/yanl55555/p/12623447.html友情提示:学习这部分内容可以学习一下nettty介绍BIO NIO上面有所介绍直接内存 不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。转载 2021-06-02 14:01:57 · 101 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-10-对象实例化内存布局与访问定位
转载:https://www.bilibili.com/video/BV1PJ411n7xZ参考:https://gitee.com/moxi159753/LearningNotes/tree/master/JVM,https://www.cnblogs.com/yanl55555/p/12623447.html对象的实例化面试题美团:对象在JVM中是怎么存储的?对象头信息里面有哪些东西?蚂蚁金服:二面:java对象头里有什么对象创建方式 new:最常见的方式(本质转载 2021-06-02 13:57:27 · 123 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-9-方法区
转载:https://www.bilibili.com/video/BV1PJ411n7xZ参考:https://gitee.com/moxi159753/LearningNotes/tree/master/JVM,https://www.cnblogs.com/yanl55555/p/12623447.html栈堆、方法区的交互关系讲这里从线程共享与否的角度来看Person:存放在元空间,也可以说方法区 person:存放在Java栈的局部变量表中 new Person():存放转载 2021-06-02 13:43:27 · 157 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-8-堆
转载:https://www.bilibili.com/video/BV1PJ411n7xZ参考:https://gitee.com/moxi159753/LearningNotes/tree/master/JVM,https://www.cnblogs.com/yanl55555/p/12623447.html堆的核心概述 一个进程对应一个JVM实列,其中进程包含多个线程,该进程的n个线程是共享同一堆空间的。 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。转载 2021-06-02 12:19:53 · 281 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-7-本地方法栈
转载:https://www.bilibili.com/video/BV1PJ411n7xZ参考:https://gitee.com/moxi159753/LearningNotes/tree/master/JVM,https://www.cnblogs.com/yanl55555/p/12623447.html本地方法栈 Java虚拟机栈于管理Java方法的调用,而本地方法栈用于管理本地方法的调用。 本地方法栈,也是线程私有的。 允许被实现成固定或者是可动态扩展的内存转载 2021-05-30 19:58:59 · 91 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-6-本地方法接口
转载:https://www.bilibili.com/video/BV1PJ411n7xZ参考:https://gitee.com/moxi159753/LearningNotes/tree/master/JVM,https://www.cnblogs.com/yanl55555/p/12623447.html什么是本地方法说白了:就是不是Java写的方法简单地讲,一个Native Method是一个Java调用非Java代码的接囗。一个Native Method是这样一个Java方法转载 2021-05-30 19:54:46 · 110 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-5-虚拟机栈
转载:https://www.bilibili.com/video/BV1PJ411n7xZ参考:https://gitee.com/moxi159753/LearningNotes/tree/master/JVM,https://www.cnblogs.com/yanl55555/p/12623447.html虚拟机栈概述由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。 优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同转载 2021-05-30 19:46:26 · 217 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-4-程序计数器
PC Register介绍转载:https://www.bilibili.com/video/BV1PJ411n7xZ参考:https://gitee.com/moxi159753/LearningNotes/tree/master/JVMJVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计转载 2021-05-30 16:20:31 · 94 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-3-运行时数据区概述及线程
前言转载:https://www.bilibili.com/video/BV1PJ411n7xZ参考:https://gitee.com/moxi159753/LearningNotes/tree/master/JVM当我们通过前面的:类的加载-> 验证 -> 准备 -> 解析 -> 初始化 这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区内存内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序转载 2021-05-30 16:07:26 · 138 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-2-类加载子系统
内存结构概述转载:https://www.bilibili.com/video/BV1PJ411n7xZ参考:https://gitee.com/moxi159753/LearningNotes/tree/master/JVM简图:详细图:类加载器与类的加载过程类加载器子系统作用类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。 ClassLoader只负责class文件的加载,至于它是否可以运行,则由Ex转载 2021-05-30 16:01:35 · 162 阅读 · 0 评论 -
尚硅谷2020最新版宋红康JVM教程-1-JVM简介
转载:https://www.bilibili.com/video/BV1PJ411n7xZ参考:https://www.cnblogs.com/yanl55555/category/1686360.htmlJava代码一次编译,到处运行跨语言的JVM(虚拟机只关心字节码文件)JVM的作用JVM的位置JVM的整体结构方法区和堆区是所有线程共享的内存区域;而java栈、本地方法栈和程序计数器是运行是线程私有的内存区域。 Java栈又叫做jvm转载 2021-05-30 15:27:43 · 658 阅读 · 0 评论