Java中堆栈帧的内容

Ank*_*ani 4 java jvm vm-implementation

从 Java 虚拟机实现 ( http://docs.oracle.com/javase/specs/jvms/se7/html/index.html )可以明显看出,堆栈帧存在于存储方法运行时数据的堆上。但是java中堆栈帧的内容是什么,堆栈帧是如何组织起来存储局部变量和中间结果的值的。数据结构是如何组织的。

小智 5

首先,栈帧是JVM栈的一部分,不是堆[JVM内存分为5部分:方法区、堆、栈、PC寄存器和本地内存。]

为了回答你的问题,栈帧分为三部分:局部变量数组、帧数据和操作数栈。详细信息请参考以下链接:http : //www.artima.com/insidejvm/ed2/jvm8.html

  • 根据 JVM 规范 Java SE 8 版的“2.5.2”节:*由于除了推送和弹出帧之外,Java 虚拟机堆栈从不直接操作,因此帧可能是堆分配的* [来源](https://docs. oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.5.2)。 (2认同)