首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JVM-虚拟机操作数(Operand Stack))

1 操作数的特点 每一个独立的帧除了包含局部变量表以外,还包含一个后进先出(Last - In - First -Out的 操作数,也可以称之为表达式(Expression Stack) 操作数...,在方法执行过程中,根据字节码指令,往中写入数据或提取数据,即入(push)和 出(pop) 某些字节码指令将值压入操作数,其余的字节码指令将操作数取出。...操作数就是JVM执行引擎的一个工作区,当一个方法刚开始执行的时候,一个新的帧也会随之被创建出来,这个时候方法的操作数是空的(这个时候数组是创建好并且是长度固定的,但数组的内容为空) 每一个操作数都会拥有一个明确的深度用于存储数值...中的任何一个元素都是可以任意的Java数据类型 32bit的类型占用一个栈单位深度 64bit的类型占用两个栈单位深度 操作数并非采用访问索引的方式来进行数据访问的,而是只能通过标准的入和出操作来完成一次数据访问...另外,我们说Java虚拟机的解释引擎是基于的执行引擎,其中的指的就是操作数

46830
您找到你想要的搜索结果了吗?
是的
没有找到

Java结构_java

大家好,又见面了,我是你们的朋友全君。 Java结构 概念 典型的结构如下图所示:结构只能在一端操作,该操作端叫做顶,另一端叫做底。...向一个插入新元素又称作进、入或压,它是把新元素放到顶元素的上面,使之成为新的顶元素; 从一个删除元素又称作出或退,它是把顶元素删除掉,使其相邻的元素成为新的顶元素。...那样在执行的过程中, 会先将A压入, A没有执行完, 所有不会弹出. 在A执行的过程中调用了B, 会将B压入到, 这个时候B在顶, A在底....所以当前的顺序是: 顶A->B->C->D顶 D执行完, 弹出. C/B/A依次弹出. 所以我们有函数调用的称呼, 就来自于它们内部的实现机制....(通过来实现的) 清楚了上面这个调用流程就应该知道的重要性了吧。在Java中已经跟我们封装好了 Stock类就是结构 的应用 首先了解一下中的常用方法?

54510

Java 虚拟机原理】帧 | 局部变量表 | 操作数 | 方法出口 | JVM 指令逐条解析

文章目录 前言 一、JVM 指令逐条解析 1、Java 代码 2、Java 虚拟机指令 3、分析 JVM 指令 4、局部变量表 与 操作数 二、方法出口 前言 " 帧 " 中存储的是 局部变量表..., 操作数 , 动态链接 , 方法出口 ; 一、JVM 指令逐条解析 ---- 1、Java 代码 Java 代码 : public class HelloWorld { public int...中取出一个值 , 存入到 局部变量 1 中 , 对应的 操作数 中的 顶部元素出 , 对应代码 int a = 1; ; 操作数 是 " 帧 " 中的 操作数 ; 可以看做 是一个临时存放数据的区域...类型值到 操作数 中 ; 将 局部变量 b 的值 1 , 装载到操作数中 ; 对应代码 int c = a + b; ; 6: iadd : 执行 int 类型的加法 ; 从 操作数 中取出..._3 : 从 局部变量 3 中装载 int 类型值到 操作数 中 ; 将 局部变量 c 的值 2 , 装载到操作数中 ; 对应代码 return c; ; 9: ireturn : 从 操作数 中取出值

34510

帧之操作数(Operand Stack)和动态链接(Dynamic Linking)解读

操作数 概念 每一个独立的帧除了包含局部变量表以外,还包含一个后进先出(Last-In-First-Out)的 操作数,也可以称之为表达式(Expression Stack) 操作数,在方法执行过程中...,根据字节码指令,往中写入数据或提取数据,即入(push)和 出(pop) 某些字节码指令将值压入操作数,其余的字节码指令将操作数取出。...中的任何一个元素都是可以任意的Java数据类型 32bit的类型占用一个栈单位深度 64bit的类型占用两个栈单位深度 操作数并非采用访问索引的方式来进行数据访问的,而是只能通过标准的入和出操作来完成一次数据访问...另外,我们说Java虚拟机的解释引擎是基于的执行引擎,其中的指的就是操作数。...方法重写的本质 Java 语言中方法重写的本质: 找到操作数顶的第一个元素所执行的对象的实际类型,记作C。

17840

Java实现

数组实现一:优点:入和出速度快,缺点:长度有限(有时候这也不能算是个缺点) public class Stack { private int top = -1; private Object[...bottom -> top: | 1 | 2 | 2 bottom -> top: | 1 | bottom -> top: | 1 | 99 | Exception in thread "main" java.lang.Exception...at Stack.push(Stack.java:17) at Stack.main(Stack.java:44) 数据项入和出的时间复杂度都为常数O(1) 数组实现二:优点:无长度限制,缺点:...入慢 import java.util.Arrays; public class UnboundedStack { private int top = -1; private Object[]...,数组的长度是固定的,当空间不足时,必须将原数组数据复制到一个更长的数组中,考虑到入时或许需要进行数组复制,平均需要复制N/2个数据项,故入的时间复杂度为O(N),出的时间复杂度依然为O(1)

60940

算法——Java实现

 定义: 是一种先进后出的数据结构,我们把允许插入和删除的一端称为顶,另一端称为底,不含任何元素的称为空 java代码实现: 基于数组: 1 import org.junit.jupiter.api.Test...:  有个缺陷,必须事先确定数组的大小,这样如果满了的话,想在存储元素就必须通过编程手段来扩充数组的容量,这样就很麻烦。...数组有两个端点,两个有两个底,让一个底为数组的0下标,另一个为数组的长度n-1处 代码实现: 1 import javax.crypto.Mac; 2 3 /** 4...的顶元素为: " + seqStack.getTop1Elem()); 129 System.out.println("2的顶元素为: " + seqStack.getTop2Elem...的顶元素为: " + seqStack.getTop1Elem()); 137 System.out.println("2的顶元素为: " + seqStack.getTop2Elem

39840

java内存和堆内存_Java本地方法

大家好,又见面了,我是你们的朋友全君。 介绍Java语言有关内存分配的知识。Java语言把内存分为两种:内存和堆内存。...内存 在方法中定义的一些基本类型的变量和对象的引用变量都在方法的内存中分配,当在一段代码块中定义一个变量时,Java就在内存中为这个变量分配内存空间,当超出变量的作用域后,Java会自动释放掉为该变量所分配的内存空间...在堆中创建了一个数组或对象后,同时还在中定义一个特殊的变量,让中的这个变量的取值等于数组或对象在堆内存中的首地址,中的这个变量就成了数组或对象的引用变量,引用变量实际上保存的是数组或对象在堆内存中的首地址...Java有一个特殊的引用型常量null,如果将一个引用变量赋值为null,则表示该引用变量不指向(引用)任何对象。 ---- 下面通过一个数组案例进行演示,以对内存和堆内存有更深的了解。...发布者:全程序员长,转载请注明出处:https://javaforall.cn/197464.html原文链接:https://javaforall.cn

96010
领券