摘要: 栈帧的内部结构 每个栈帧中存储着 1.局部变量表(Local Variables) 2.操作数栈(Operand Stack)(或表达式栈) 3.动态链接(Dynamic Linking)(或执行"运行时常量池"的方法引用) 深入理解Java多态特性必读!! 4.方法返回地址(Return Adre 阅读全文
posted @ 2020-04-01 22:13 月半大熊猫 阅读(5221) 评论(2) 推荐(28) 编辑
摘要: 虚拟机栈的背景 由于跨平台性的设计,java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。 根据栈设计的优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。 内存中的堆与栈 栈是运行时的单位,而堆是存储的单位1.栈解决程序的运行问题, 阅读全文
posted @ 2020-04-01 20:49 月半大熊猫 阅读(2488) 评论(0) 推荐(17) 编辑
摘要: JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。 一个线程对应一个 JVM Stack。JVM Sta 阅读全文
posted @ 2020-04-01 18:31 月半大熊猫 阅读(2368) 评论(1) 推荐(13) 编辑
摘要: Java内存空间 内存是非常重要的系统资源,是硬盘和cpu的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了JAVA在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的jvm对于内存的划分方式和管理机制存在着部分差异(对于Hotspot主要指方法区) ( 阅读全文
posted @ 2020-04-01 17:38 月半大熊猫 阅读(2395) 评论(0) 推荐(14) 编辑
摘要: JAVA SPI 简介 SPI 是 Java 提供的一种服务加载方式,全名为 Service Provider Interface。根据 Java 的 SPI 规范,我们可以定义一个服务接口,具体的实现由对应的实现者去提供,即服务提供者。然后在使用的时候再根据 SPI 的规范去获取对应的服务提供者的 阅读全文
posted @ 2020-04-01 16:06 月半大熊猫 阅读(758) 评论(0) 推荐(7) 编辑
摘要: JVM细节版架构图 本文针对Class Loader SubSystem这一块展开讲解类加载子系统的工作流程 类加载子系统作用 1.类加载子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识即16进制CA FE BA BE; 2.加载后的Class类信息存放于一 阅读全文
posted @ 2020-04-01 11:04 月半大熊猫 阅读(6602) 评论(4) 推荐(42) 编辑
摘要: 本篇仅仅是JVM的简介,关于更多的JVM细节,请参见 参见: 关于类加载子系统详述 参见: 关于程序计数器详述 参见 关于Java虚拟机栈的详述 参见: 关于本地方法接口详述 参见: 关于本地方法栈详述 参见: 关于方法区的详述 参见: 关于堆区的详述 参见: 关于执行引擎的详述 HotSpot虚拟 阅读全文
posted @ 2020-04-01 10:43 月半大熊猫 阅读(6877) 评论(1) 推荐(59) 编辑