みよひで回答ポイント 91ptウォッチ 2

Java言語でのガベージコレクションと変数のスコープとの関係について教えてください。以下のプログラムをコンパイル/実行したところ、


mylist = 10
mylist = 110
mylist = 210
<<中略>>
mylist = 910

という結果になりました。変数tmpのスコープは最初のforループが終わったところなので、生成したインスタンスもそのときに破棄されると考えていたのですが、実行結果を見る限り違うようです。変数のスコープとガベージコレクションのタイミングは別と考えてよろしいのでしょうか?

できましたら、該当するJava言語仕様へのリンクも示していただければ嬉しいです。

以上、よろしくお願いします。

--- ソース ---
import java.util.*;

class sample {
 public static void main(String[] arg) {
  List<Integer> mylist = new ArrayList<Integer>();
  for( int i=0 ; i<10 ; i++ ){
   Integer tmp = new Integer(i*100+10);
   mylist.add(tmp);
  }
  for( int i=0 ; i<10 ; i++ ){
   System.out.println("mylist = " + mylist.get(i));
  }
 }
}

※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
ログインして回答する

ベストアンサー

その他の回答

この質問へのコメント

この質問への反応(ブックマークコメント)

質問の情報

登録日時
2008-04-26 11:24:41
終了日時
2008-04-26 22:17:59
回答条件
1人2回まで

この質問のカテゴリ

この質問に含まれるキーワード

ArrayList18Java1731インスタンス183コンパイル428変数1063Class541プログラム5048

人気の質問

メニュー

PC版