我有一个方法
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&field; field relationToDBQueue中, list,a1,a2变量会将堆栈内存复制到堆中吗?情况是什么过程?
感谢您的所有建议。
答案 0 :(得分:1)
Java对象永远不会存储在堆栈中。总是堆。但通常,堆栈上有对这些对象的引用。在您的示例中,这些引用将从堆栈复制到堆中。