虚拟机栈和本地方法栈的简单介绍
Java虚拟机栈(Java Virtual Machine Stacks)也是线程私有的,即生命周期和线程相同。Java虚拟机栈和线程同时创
建,用于存储栈帧。每个方法在执行时都会创建一个栈帧(Stack Frame),用于存储局部变量表、操作数栈、动态
链接、方法出口等信息。每一个方法从调用直到执行完成的过程就对应着一个栈帧在虚拟机栈中从入栈到出栈的过
程
关于栈帧举例
设置虚拟机栈的大小
设置后效果
可以看到可计算的次数更少了,一般情况,使用默认值,不需要特意设置
局部变量表就是我们定义的变量后,变量赋值后,值的存放位置,包含8种基本数据类型
操作数栈其实就是数据被修改后临时存放的位置,调用方需要使用地方时候从这个来拿
动态链接
不论方法是否正常结束,都要回到方法被调用的位置,程序才能继续执行
本地方法栈中放置本地方法提供给虚拟机使用,而本地方法不一定是java语言编写的,属于线程私有,生命周期和线程相同,每个线程有一个
同时本地方法栈会产生两类异常
一是StrackOverFlowError,二是OutOfMemoryError