Java堆栈

Java堆栈
jvm为每个新创建的线程都分配一个堆栈。堆栈以帧为单位保存
线程的状态。jvm对堆栈只进行两种操作:以帧为单位的压栈和出栈
操作。

某个线程正在执行的方法称为此线程的当前方法。当前方法使用的帧称
为当前帧。当前方法所属的类称为当前类。当前类的常量池称为当前
常量池。当线程执行一个方法时,它会跟踪当前的类和常量池。当jvm
会在当前帧内执行帧内数据的操作。

当线程激活一个java方法,jvm就会在线程的java堆栈里新压入一个帧。
这个帧自然成为了当前帧。在此方法执行期间,这个帧将用来保存参数,
局部变量,中间计算过程和其他数据。

一个方法可以以两种方法结束。一种是正常返回结束。一种是通过
异常抛出而异常结束(abrupt completion)。不管以那种方式返回,jvm
都会将当前帧弹出堆栈然后释放掉,这样上一个方法的帧就成为当前帧了。
(译者:可能可以这样理解,位于堆栈顶部的帧为当前帧)

java堆栈上的所有数据都为此线程私有。一个线程不能访问另一个线程
的堆栈数据,所以在多线程的情况下也不需要对堆栈数据的访问进行同步。

象方法区和堆一样(见以前的译文),java堆栈和帧在内存中也不必是连续
的。帧可以分布在连续的内存区,也可以不是。帧的数据结构由jvm的实现者
来决定,他们可以允许用户指定java堆栈的初始大小或最大最小尺寸。



以上文章来自:http://handawei.iteye.com/blog/657030

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值