深入了解java虚拟机(JVM) 第二章 内存区域---栈空间

一、栈的含义

    用于描述方法执行的动态内存模型,简单来说就是代码中的方法模块。主要用于局部变量表。栈的大小在编译器中就已经分配了空间,在进入一个方法时,这个方法需要栈帧分配多少内存是固定的,运行期间是不会改变大小。

局部变量表示指:存放编译期可知的各种基本类型和引用类型。

二、栈帧

  说到了栈,就不得不说栈中最为重要的东西,栈帧。什么是栈帧,我们先来看看比较官方的定义:程序执行时,调用每个方法执行时,都会为其创建一个栈帧,栈帧伴随着方法从创建到执行完成。看了这段话是不是还是很难理解,接下来我们就用一张图来简单表示一下:

 

     如图所示,在方法执行的时候,方法会被分配到一个栈帧中,然后栈帧入栈,开始执行方法,当方法结束时,栈帧就出栈。这样看起来是不是比较清晰,有此定义我们可以就可以想到在内存分配的过程中,可以优先考虑栈上分配。至于栈上分配,在垃圾回收器中会继续讲到。

三、本地方法栈

  本地方法栈是jvm执行native方法时使用的,native方法是本地方法,这个方法没有在JVM中执行,而是在本地就已经编译好,一般本地方法用于跨语言操作,简单来说就是用C或者其他语言封装好一个方法,然后在java中去调用这个方法。

转载于:https://www.cnblogs.com/daijiting/p/9918255.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值