有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    Is returnAddress the address of the previous frame?

    否,returnAddress是当前字节码中包含jsrjsr_wret指令的位置

    正如the documentation of these instructions所描述的,它用于表示jsrjsr_w指令后面的字节码位置,以允许ret在该位置恢复

    I saw that returnAddress was instructed jsr,jsr_w,ret using (finally statement for Java), starting from JDK7 virtual machine is not allowed to appear these several instructions …, so does he still have a point of existence?

    在51或更高版本的Java类中,这些指令可能不会出现,因此,代码可能永远不会处理returnAddress类型的值。与此相关,^{} attributes无法表示类型returnAddress

    不过,只要JVM向后兼容旧的类文件,returnAddress就是一件事