JVM内存结构 - 栈

本文详细介绍了Java虚拟机栈的定义与工作原理,包括栈帧的构成、内存溢出情况以及线程安全问题。通过实例解析了方法调用过程中的栈帧入栈和出栈顺序,指出垃圾回收不涉及栈内存,而栈内存大小应适中以保证运行效率。
摘要由CSDN通过智能技术生成

1 栈

        栈是一种“操作受限”的线性表,只涉及在一端插入和删除数据,并且满足后进先出、先进后出的特性。

2 Java虚拟机栈

2.1 定义

        Java 虚拟机栈描述的是 Java 方法执行的内存模型,用于存储栈帧。线程启动时会创建虚拟机栈,每个方法在执行时会在虚拟机栈中创建一个栈帧,用于存储局部变量表、操作数栈、动态连接、方法返回地址、附加信息等信息。每个方法从调用到执行完成的过程,就对应着一个栈帧在虚拟机栈中的入栈(压栈)到出栈(弹栈)的过程。

  • 每个线程运行需要的内存空间,称为虚拟机栈;
  • 每个栈由多个栈帧组成,对应着每次方法调用所占用的内存;
  • 栈帧:每个方法运行时需要的内存,一个栈帧表示一个方法的调用;
  • 每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法;

2.2 实例

说明:设置一个简单的Demo,主函数调用method1,method1调用method2,我们观察每个方法入栈的顺序及其它们之间的先后顺序。

public class Demo1_1 {

    public static void main(String[] args) throws InterruptedExce
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值