0
public class Test{
    public Item item;
    
    Test(Item item){
        this.item = item;
    }
    
    public void test(){
        Item itemLocal = new Item();
    }
}

实例应该都放在堆里面
itemLocal 好像放在栈帧里面
item呢

另外两个Test对象 是不是共享代码区里面的代码方法啊

该找的 他写的对不对

查看全部 3 个回答

0

从语法上说,itemLocal变量本身(引用)在栈里,但引用的对象在堆里;但由于JVM优化的关系,itemLocal这个变量根本就没用到,所以栈里可能不会有这个变量。

另外一个类无论实例化了几个对象,只要在同一个ClassLoader中,方法代码(bytecode)总是一个。

下面你找的例子,基本正确。