0

我知道这个问题有点笼统,但我已经需要一个通用的答案了。所以我想了解的是如何从内存的角度访问对象的成员变量,例如,当对该对象调用方法时?

例如,我有这个简单的课程;

class Hoo {

    public int field;

    // constructor, setters, getters
    ... 

}

class Foo {

    Hoo hoo;

    void setHoo() {
        hoo = new Hoo(...)
    }
}

运行时如何在hoo初始化之前找出它的内存地址?同样适用于以下代码;

class Foo {

    Hoo hoo = new Hoo();

    void setHooField() {
        hoo.field = 5;
    }
}

运行时如何知道该字段的地址以在其上存储值?

IMO,至少对于 Java,这些变量地址被映射到类文件中的偏移量,因此可以通过将此偏移量添加到传递的对象引用(到虚拟方法中)来计算出确切的位置(在虚拟内存上)。但不确定...

有任何想法吗?

4

0 回答 0