java 堆栈
来源:互联网 发布:延长壳牌西安待遇知乎 编辑:程序博客网 时间:2024/06/06 03:23
java栈
栈
java栈用来保存线程的运行状态。每当启动一个新线程时,java虚拟机都会为该线程分配一个java栈,并且栈上的所有数据都是此线程私有的(即任何线程都不能访问另一个线程的栈数据)。java栈是由许多栈帧(stack frame)或帧(frame)组成的,一个栈帧包含一个java方法的调用。当线程调用一个java方法时,虚拟机压入一个新的栈帧到该线程的java栈中;而当该方法返回时,这个栈帧被从java栈中弹出并抛弃。
栈帧
栈帧由三部分组成:局部变量区、操作数栈和帧数据区。
局部变量区 包含对应方法的参数和局部变量,它以一个字长为单位,从0开始计数的数组。类型为int、float、reference和returnValue的值在数组中只占据一项,而类型为boolean、byte、short和char的值在存入数组前都被转化为int值因而同样占据一项;但是long和double占据连续的两项。如:
class Example{
public static int runClassMethod(int i,long l,float f,double d,Object o,byte b){return 0;}
public int runInstanceMethod(char c,double d,short s,boolean b){return 0;}
}
操作数栈 与局部变量一样,也是以一个字长为单位;但是与前者不同的是,它不是通过索引来访问,而是通过标准的栈操作(push、pop)来访问。如:iload_0 //push the int in local variable 0iload_1 //push the int in local variable 1iadd //pop two ints ,add them ,push resultistore_2//pop int ,store into local variable 2
帧数据区 除了局部变量区和操作数外,java栈还需要一些数据来支持常量池的解析、正常方法返回以及异常派发机制,这些信息都保存在帧数据区中。
0 0
- java堆栈
- java堆栈
- java堆栈
- java堆栈
- java堆栈
- Java堆栈
- Java堆栈
- java堆栈
- Java堆栈
- JAVA堆栈
- java堆栈
- Java堆栈
- java堆栈
- JAVA 堆栈
- Java堆栈
- Java--堆栈
- java 堆栈
- java堆栈
- Lua的sleep函数
- c/c++中#号的用法
- C++开源代码项目汇总
- metasploit - encode php backdoor with php/base64
- STL系列(2):Vector 向量容器
- java 堆栈
- linux spi驱动开发学习(三)-----spi_bitbang.c详解
- mongodb
- 中缀表达式求值问题(字符串转换为数学表达式)
- 1.4.8 表空间维护
- STM32学习笔记4(失败的尝试)-掉电检测+Flash存取
- MVC开发中遇到的--收藏本站火狐浏览器兼容问题
- Sum Problem-hdu-1001
- linux spi驱动开发学习(四)-----spi驱动程序完整流程分析