JVM
文章平均质量分 87
Fortuneteller6
这个作者很懒,什么都没留下…
展开
-
6.Java虚拟机栈:栈帧
Ⅰ. 栈帧内部结构每个栈帧存储着:1.局部变量表(Local Variables)、2.操作数栈(Operand Stack)、3.动态链接(Dynamic Linking)、4.方法返回地址(Return Address)、5.一些附加信息Ⅱ. 局部变量表一、局部变量表基本理解1.局部变量表也被称为局部变量数组或本地方法表2.定义为一个数字数组,主要用于存储方法参数和定义在方法体内的局部变量这些数据类型包括各类基本数据类型、对象引用(reference),以及returnAddress3.由原创 2021-03-13 10:28:01 · 220 阅读 · 1 评论 -
5.JVM运行时数据区:Java虚拟机栈
一、虚拟机栈的背景基于Java的语言的跨平台性设计,由因为CPU的架构不同,所以JVM不能设计为基于寄存器结构根据栈设计 优点:1. 跨平台 2.指令集小,编译器容易实现 缺点 :1.性能下降,效率低 2.实现同样功能需要更多的指令JVM的堆与栈栈是运行时的单位,堆是储存单位:栈管运行,堆管储存栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储的问题,即数据怎么放、放在哪儿一般来讲,对象主要都是放在堆空间的,是运行时数据区占用内存较大的一部分栈存原创 2021-03-13 10:26:31 · 105 阅读 · 0 评论 -
4.JVM运行时数据区:程序计数器
一、程序计数器(PC)概念JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟下图是一张经典的JVM工作流程图在正在运行线程中,只有位于栈顶的栈帧才是有效的,称为当前栈帧,与这个栈帧相关联的方法称为当前方法我们可以看到PC寄存器(程序计数器)与执行引擎指向同一地址,下面我们来探究PC寄存器的作用二、程序计数原创 2021-03-13 10:24:06 · 78 阅读 · 0 评论 -
3.JVM运行时数据区
一、内存工作原理内存是计算机中重要的部件之一,它是外存(如硬盘)与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器和主存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,操作系统就会把需要运算的数据从内存调到CPU中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行由上图可知:内存可以加快软件的运行速度二、运行时数据区经典内存布局J原创 2021-03-13 10:23:29 · 78 阅读 · 0 评论 -
2.类加载器子系统
类加载器子系统一、JVM架构图二、 类加载子系统运行流程加载1.通过一个类的全限定类名获取定义此类的二进制字节流2.将这个字节流所代表的静态存储结构转换为方法区运行时数据结构3.在内存中生成一个代表这个类的java.lang.Class对象,作为方法区中这个类的各种数据的访问入口链接:验证、准备和解析验证:1. 确保Class字节的字节流中包含的信息符合JVM的要求,保证被加载类的正确性,不会危害虚拟机自身安全2. 验证四种格式:文件格式验证、源数据验证、字节码验证和符号引用原创 2021-03-13 10:22:33 · 82 阅读 · 0 评论 -
1.JVM体系结构
一、JVM概述Java虚拟机有自己完善的硬件架构,如处理器、堆栈等,还具有相应的指令系统Java虚拟机本质上就是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指令。Java语言的可移植性正是建立在Java虚拟机的基础上。任何平台只要装有针对于该平台的Java虚拟机,字节码文件(.class)就可以在该平台上运行。这就是“一次编译,多次运行”Java虚拟机不仅是一种跨平台的软件,而且是一种新的网络计算平台。该平台包括许多相关的技术,如符合开放接口标准的各种API、优化技术等。Jav原创 2021-03-13 10:21:26 · 78 阅读 · 0 评论