java虚拟机内存区常用名词解释
Posted evildoerdb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java虚拟机内存区常用名词解释相关的知识,希望对你有一定的参考价值。
虚拟机内存区常见名词:
栈帧(Frames):
栈帧是用来存储数据和部分结果,以及执行动态链接、方法返回值和异常信息的。
每次方法的调用都会生成一个栈帧,然后将该栈帧进行压栈。当方法结束后,该栈帧将会出栈、被销毁。
无论是正常结束还是异常结束。
每个栈帧都是自己的局部变量表、操作数栈、以及对当前方法类的运行时常量池的引用。
由当前线程创建的帧不能被其它线程引用。
局部变量(Local Variables):
每个栈帧包含一个叫局部变量的变量数组,它的长度在编译的时候确定。
单个局部变量可以保存类型的值boolean,byte,char,short,int, float,reference,或returnAddress。一对局部变量可以包含类型long或值double。
虚拟机使用局部变量在方法调用上传递参数。
例如:当前栈帧中只有 int i = 3; 它就只占一个局部变量。
操作数栈(Operand Stacks)
每个帧包含一个(LIFO)后进先出的栈、称为操作数栈、栈的最大深度在编译时候确定。
虚拟机指令将局部变量或者常量值压栈到操作数栈中、其它虚拟机指令取出它们,最它们进行操作、将结果再压栈到操作数栈中。
例如:后缀表达式求值
1 * 2 + 3 写成后缀表达式就是 1 2 * 3 +
1 先入栈 2 再入栈 当到*号时、弹出1、2进行乘操作 将结果2压栈
然后3再压栈 当到+时、将3、2弹栈、计算结果为5再压栈
动态链接(Dynamic Linking)
每个栈帧都包含对运行时常量池的引用,
以上是关于java虚拟机内存区常用名词解释的主要内容,如果未能解决你的问题,请参考以下文章