gpt4 book ai didi

java - 变量变为字段、栈变为堆的过程是怎样的?

转载 作者:行者123 更新时间:2023-12-02 13:13:09 24 4
gpt4 key购买 nike

我有一个方法

public static  RelationEntityWrapper findRelationByUserId(){
//situation 1
List<ObjectA> list = new ArrayList();
ObjectA a1= new ObjectA();
ObjectA a2= new ObjectA();
list.add(a1);
list.add(a2);
//situation 2
Relations.add(list);
}

public Relations(){
public static LinkedBlockingQueue relationToDBQueue=new
LinkedBlockingQueue<ObjectA>(1024*1024);
static{
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
ObjectA info = relationToDBQueue.take();
}catch(Exception e){}
}
}}}
public static void add(List<ObjectA> list) {
try {
for(ObjectA o :list)
relationToDBQueue.add(o);
} catch (Exception e) {
e.printStackTrace();
}
}
}

情况1

list,a1,a2都是方法的变量,所以它们存储在堆栈中

情况2

方法变量将更改为存储在Relations的字段relationToDBQueue中,list,a1,a2 变量会将其堆栈内存复制到堆吗?目前情况是什么流程?

感谢您的所有建议。

最佳答案

Java 对象从不存储在堆栈中。总是堆。但通常,堆栈上有对这些对象的引用。在您的示例中,这些引用从堆栈复制到堆。

关于java - 变量变为字段、栈变为堆的过程是怎样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43860803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com