JVM中的Java虚拟机栈

一、虚拟机栈的基本内容

1、概述

Java虚拟机栈是线程私有的。每个线程在创建时都会创建一个虚拟机栈,栈内部保存一个个的栈帧。一个栈帧对应一个方法,随着方法的调用和执行完毕,相应的栈帧执行入栈和出栈。

在java程序中,main方法是一个主线程。

2、特点

  • 生命周期和线程保持一致;
  • 主管Java程序的运行,栈是运行时的单位,堆是存储的单位,也就是说:栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;堆解决的是数据存储的问题,即数据怎么放、放在哪儿
  • 栈保存方法的局部变量(8种基本数据类型、对象的引用地址),部分结果,并参与方法的调用和返回。这里的对象的引用地址指的就是地址,对象是在堆中存放,每个对象均有一个地址,栈中存放的就是这个地址(指针)
  • 栈存在溢出(OOM)问题,不存在垃圾回收(GC)问题

二、栈的内部结构和运行原理

1、内部结构

  • 栈中的数据是以栈帧的格式存在,栈帧是一个内存块,维系着方法执行过程中的数据信息;
  • 局部变量表
  • 操作数栈(或表达式栈)
  • 动态链接(或指向运行时常量池的方法引用)
  • 方法返回地址
  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兴涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值