java在JVM中“at ReturnAddress”是什么意思?
我在读JVMS, §2 The Structure of The Java Virtual Machine
2.3.3. The returnAddress Type and Values
我这里有一些问题。什么是returnAddress
returnAddress是上一帧的地址吗
有人能简单地解释一下吗
The returnAddress type is used by the Java Virtual Machine's jsr, ret, and jsr_w instructions (§jsr, §ret, §jsr_w)
我看到returnAddress
被指示jsr,jsr_w,ret
使用(Java的finally语句),从JDK7开始,虚拟机不允许出现这几条指令(jsr..),那么它还有存在的意义吗
# 1 楼答案
否,
returnAddress
是当前字节码中包含jsr
或jsr_w
和ret
指令的位置正如the documentation of these instructions所描述的,它用于表示
jsr
或jsr_w
指令后面的字节码位置,以允许ret
在该位置恢复在51或更高版本的Java类中,这些指令可能不会出现,因此,代码可能永远不会处理} attributes 无法表示类型
returnAddress
类型的值。与此相关,^{returnAddress
不过,只要JVM向后兼容旧的类文件,
returnAddress
就是一件事