java运行时数据区,方法栈_v1

JVM虚拟机栈中,每个方法执行时创建栈帧,存储局部变量、操作数栈和动态链接。当线程请求的帧深度超过限制时,会抛出StackOverflowError异常。例如,递归方法调用可能导致此错误,如一个方法反复调用自身。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1),

jvm虚拟机栈 : 方法执行时的一块java内存区域,方法对应的是栈
每个方法在执行的同时会创建一个栈帧Stack Framel用于存储局部变量表
                                                                                                ,操作数栈【如变量a+变量b得到一个结果】,
                                                                                                 动态链接【对象引用地址】
                                                                                                 方法出口[return 值]等
每一个方法从调用到完成的过程。就对应着一个帧栈在虚拟机栈中入栈到出栈的过程

(2),特点

 1 局部变量表存放了编译期可知的各种数据类型[boolean、byte、char、short、int、float、long、double)以及对象引用(reference 类型)]
 2 如果线程请求的帧深度大于虚拟机所允许的深度,将抛出StackOverflowError异常

(3),范例

例如 一个方法自己调自己
public class TestCls {

    public static void main(String[] args) throws Exception {
        TestCls testCls = new TestCls();
        testCls.testStack();
    }
    private void testStack() {
        String s1 = "";
        testStack();
    }
}
将抛出StackOverflowError异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值