美文网首页
虚拟机栈

虚拟机栈

作者: 雨景江水 | 来源:发表于2020-08-20 07:38 被阅读0次

一.虚拟机栈组成:
局部变量表、操作数栈、动态链接、方法返回地址、一些附加信息

二.Local Variables Table : 局部变量表
1.局部变量表也被称之为局部变量数组或本地变量表

2.定义为一个数字数组,主要用于存储方法参数和定义在方法体内的局部变量这些数据类型包括各类基本数据类型、对象引用(reference),以及returnAddressleixing

3.由于局部变量表是建立在线程的栈上,是线程私有的数据,因此不存在数据安全问题

4.局部变量表所需的容量大小是在编译期确定下来的,并保存在方法的Code属性的maximum local variables数据项中。在方法运行期间是不会改变局部变量表的大小的

5.方法嵌套调用的次数由栈的大小决定。一般来说,栈越大,方法嵌套调用次数越多。对一个函数而言,他的参数和局部变量越多,使得局部变量表膨胀,它的栈帧就越大,以满足方法调用所需传递的信息增大的需求。进而函数调用就会占用更多的栈空间。

6.局部变量表中的变量只在当前方法调用中有效。在方法执行时,虚拟机通过使用局部变量表完成参数值到参数变量列表的传递过程。当方法调用结束后,随着方法栈帧的销毁,局部变量表也会随之销毁。

相关文章

  • 小白懂JVM系列-运行时数据区之虚拟机栈

    虚拟机栈 Java虚拟机栈(Java Virtual Machine Stack),早期也叫Java栈。每个线程在...

  • java类文件

    一、定义 虚拟机栈 虚拟机栈代表是线程维度,一个线程有且只有一个虚拟栈。虚拟机栈存储的单位是栈帧,而一个栈帧包含了...

  • 【Java虚拟机】垃圾收集器与内存分配1

    Java虚拟机运行时数据区:方法区、堆、虚拟机栈、本地方法栈、程序计数器. 对于线程私有的虚拟机栈、本地方法栈、程...

  • HotSpot之栈顶缓存

    能看到栈顶缓存,至少知道HotSpot是基于栈式的虚拟机,每个线程都有自己的虚拟机栈,栈的单位是栈帧,栈帧包含操作...

  • 本地方法栈

    本地方法栈 和虚拟机栈所发挥的作用非常相似,区别是: 虚拟机栈为虚拟机执行 Java 方法 (也就是字节码)服务,...

  • 虚拟机栈

    虚拟机栈是线程私有的,每创建一个线程,虚拟机就会为这个线程创建一个虚拟机栈,虚拟机栈表示Java方法执行的内存模型...

  • java虚拟机第八章之运行时栈桢结构

    栈桢是用于虚拟机进行方法调用和方法执行时的数据结构,它是虚拟机运行时数据区虚拟机栈的栈元素。栈元素存储了方...

  • 每天五道Android面试题,轻松进大厂2018-12-19

    一、java虚拟机和Dalvik虚拟机的区别 Java虚拟机: 1、java虚拟机基于栈。基于栈的机器必须使用指令...

  • 2-JVM-内存模型

    私有 线程程序计数器PC(native时为undefined)虚拟机栈本地方法栈(结构取决于语言) 虚拟机栈栈帧(...

  • JVM

    一、 内存模型以及分区,需要详细到每个区放什么?(1)栈区:栈分为java虚拟机栈和本地方法栈虚拟机栈:线程私有的...

网友评论

      本文标题:虚拟机栈

      本文链接:https://www.haomeiwen.com/subject/yjsvqktx.html