Java栈
2016-11-08 22:22:17 0 举报
Java栈(Stack)是Java虚拟机中一个非常重要的数据结构,它遵循LIFO(后进先出)原则。栈的主要功能是存储和管理数据,通常用于方法调用时的局部变量存储、函数调用和返回等场景。Java栈有两种类型:基本类型栈和对象栈。基本类型栈主要用于存储基本数据类型(如int、float、double等),而对象栈则用于存储对象引用。栈的操作主要包括入栈(push)、出栈(pop)和查看栈顶元素(peek)等。Java栈的实现是基于数组或链表的数据结构,通过压栈和弹栈操作来管理数据的存取。
作者其他创作
大纲/内容
short
对象类型数据
int
对象实例数据
Java栈本地变量表(局部变量)
.........
double
String
实例池
reference
java堆
附加信息
Stack Frame栈帧3
栈帧结构
Stack Frame栈帧5
实例类型数据
实例类型数据的指针
到对象类型数据的指针
方法区
操作数栈
Stack Frame栈帧4
这两种对象的访问方式各有优势,使用句柄访问方式的最大好处就是reference 中存储的是稳定的句柄地址,在对象被移动(垃圾收集时移动对象是非常普遍的行为)时只会改变句柄中的实例数据指针,而reference 本身不需要被修改。使用直接指针访问方式的最大好处就是速度更快,它节省了一次指针定位的时间开销,由于对象的访问在Java 中非常频繁,因此这类开销积少成多后也是一项非常可观的执行成本。就本书讨论的主要虚拟机Sun HotSpot 而言,它是使用第二种方式进行对象访问的,但从整个软件开发的范围来看,各种语言和框架使用句柄来访问的情况也十分常见。
局部变量表
Stack Frame栈帧2
句柄池
指向运行时常量池的引用
Stack Frame栈帧1
方法返回地址
0 条评论
下一页