02 2022 档案
摘要:一、执行引擎是做什么的 执行引擎是Java虚拟机的核心组成部分之一 虚拟机是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构
阅读全文
摘要:一、对象的实例化 1、创建对象的方式 new 最常见的方式 变形1: Xxx的静态方法 变形2:XxxBuilder/xxxFactory的静态方法 Class的newInstance():反射的方式,只能调用空参的构造器,权限必须是public Constructor的newInstance(Xx
阅读全文
摘要:1、堆、栈、方法区的关系 2、方法区在哪里 《Java虚拟机规范》中明确说明: “尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。” 但对于HotSpotJVM而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是要和堆分开。所以,方法区看作
阅读全文
摘要:1、核心概述 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 Java 堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。 堆内存的大小是可以调节的。 《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的
阅读全文
摘要:1、作用 主管Java程序的运行,它保存方法的局部变量(8种基本数据类型、对象的引用地址)、部分结果,并参与方法的调用和返回。 局部变量vs成员变量(或属性) 基本数据变量vs引用类型变量(类、数组、接口) 2、特点 栈是一种快速有效的分配存储方式,访问速度仅次于PC寄存器 栈的优点是跨平台,指令集
阅读全文
摘要:JVM整体结构 1、作用 程序计数器( PC寄存器 )是用来存储指向下一条指令的地址,就是将要执行的指令代码,然后由执行引擎读取下一条指令。 2、特征 程序计数器是一块很小的内存空间,几乎可以忽略不计,也是运行速度最快的存储区域 每个线程都有它自己的程序计数器,是线程私有的,生命周期与线程的生命周期
阅读全文
摘要:一、定义 定义 如果一个类加载器在接到加载类的请求时,它首先不会自己尝试去加载这个类,而是把这个请求任务委托给父类加载器去完成,依次递归,如果父类加载器可以完成类加载任务,就成功返回。只有父类加载器无法完成此加载任务时,才自己去加载。 工作原理 如果一个类加载器收到了类加载请求,它并不会自己先去加载
阅读全文
摘要:一、概述 1、作用 类加载器是JVM执行类加载机制的前提。 ClassLoader的作用: ClassLoader是Java的核心组件,所有的Class都是由ClassLoader进行加载的,ClassLoader负责通过各种方式将Class信息的二进制数据流读入JVM内部,转换为一个与目标类对应的
阅读全文
摘要:按照Java虚拟机规范,从class文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包括如下7个阶段: 从程序中类的使用过程看: 一、过程一:Loading(加载)阶段 1、做了哪些事? 在Java中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义,引用数据类型则需要
阅读全文
摘要:一、Class文件结构 Class文件的结构并不是一成不变的,随着Java虚拟机的不断发展,总是不可避免地会对Class文件结构做出一些调整,但是其基本结构和框架是非常稳定的。 魔数 Class文件版本 常量池 访问标识(或标志) 类索引,父类索引,接口索引集合 字段表集合 方法表集合 属性表集合
阅读全文
摘要:一、什么是Java虚拟机 虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。常用的虚拟机有VMWare,Visual Box,Java Virtual Machine(Java虚拟机,简称JVM) Java程序的跨平台特性主要是指字节码文
阅读全文