Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17739
  • 博文数量: 21
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 211
  • 用 户 组: 普通用户
  • 注册时间: 2015-12-09 16:47
文章分类

全部博文(21)

文章存档

2017年(1)

2016年(9)

2015年(11)

我的朋友
最近访客

分类: Java

2016-07-25 15:14:40

栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构。他是虚拟机运行时数据区中的虚拟机栈中的栈元素。栈帧存储了方法的局部变量表,操作数栈,动态链接和方法返回地址等信息。每一个方法从调用到执行完成的过程。就对应着一个栈帧从入栈到出栈的过程。

每一个栈帧包括了局部变量表,操作数栈,动态链接,方法返回地址和一些额外的信息。

在编译程序代码的时候,栈中需要多大的局部变量表,多深的操作栈都已经确定。

局部变量表

局部变量表是一组变量值存储空间。用于存放方法参数和方法内部定义的局部变量。在java程序编译为class文件时,就在方法的code属性的max_locals数据相中确定了该方法所分配的最大局部变量表的最大容量。

操作数栈

操作数栈也常备成为操作栈,他是一个后入先出栈。当一个方法刚刚执行的时候,这个方法的操作栈时空的,在方法的执行过程中,会有各种字节码指令向操作数栈写入和提取数据。也就是出栈和入栈的操作。

阅读(282) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~