java栈组成_Java栈与栈上分配

一. java栈:java栈是一块线程私有的内存空间。如果说,java堆和程序数据密切相关,那么java栈就是和线程执行密切相关的。线程执行的基本行为是函数调用,每次函数调用的数据都是通过Java栈传递的。java heap,java stack 与Javametaspace之间的关系:00001.png特点:线程私有栈由一系列帧组成(因此Java栈也叫做帧栈)帧保存一个方法的局部变量、操作数栈、...
摘要由CSDN通过智能技术生成

一. java栈:

java栈是一块线程私有的内存空间。如果说,java堆和程序数据密切相关,那么java栈就是和线程执行密切相关的。线程执行的基本行为是函数调用,每次函数调用的数据都是通过Java栈传递的。

java heap,java stack 与Javametaspace之间的关系:

a80758913c1d

00001.png

特点:

线程私有

栈由一系列帧组成(因此Java栈也叫做帧栈)

帧保存一个方法的局部变量、操作数栈、常量池指针

每一次方法调用创建一个帧,并压栈

1.栈的结构和组成:

1)栈的结构:

这是一块先进后出的数据结构,只支持出栈和入栈两种操作。在java栈中保存的主要内容是栈帧。每一次函数调用都会有一个相应的栈帧入栈,每个函数调用结束,都有一个栈帧弹出java栈。当前正在执行的函数对应的栈就是当前的帧(位于栈顶)。

每个栈帧中,至少包含局部变量表,操作数栈和帧数据区几个部分。

注意由于每次函数调用都会生成栈帧并占有一定的栈空间。因此如果栈空间不足,函数调用就无法进行下去。系统就会抛出StackOverflowOver栈溢出的错误。例如递归时,会有很多栈帧入栈。jvm提供了-Xss来指定线程的最大栈空间,这个参数决定了函数调用的深度。

2)栈组成:

栈由栈帧组成,栈帧由局部变量表,操作数栈,帧数据区组成。

局部变量表:

用于保存函数的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值