0
私は方法の変数であるすべてのA2、A1、メソッドに変数がフィールドに変更されたときに、スタックをヒープに変更するプロセスは何ですか?
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
リストを持っているので、それらをスタック
状況2
に保存されていますメソッドの変数は、関係のフィールドに格納するように変更されます。relationToDBQueue、 list、a1、a2変数スタックメモリをヒープにコピーしますか?状況のプロセスは何ですか?
ありがとうございました。
Offtopic:あなたのコメントにはなぜArrayIndex ...質問には116 upvotesがあります。シンプル:A)よく書かれていて、コア問題を指摘しています。B)それは長い間外出していて、人々がうまくやってくれれば、新しいArrayIndexのものはすべてDUPになります。だから確かに、その質問は多くの注目を集めています。私はそれに何か悪いことは見ません。 – GhostCat