[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 10318] Re: GC の対象にな るのは?



  高橋(智)です。

Wataru Fukushima wrote:
snip
> ということで、
> ・変数のスコープはコンパイラにとっては意味あるけどJVMにとっては意味ない。
> ・ローカル変数はメソッド実行中は(スコープが外れても)参照が残っている
> のようです。
snip

  参考までに。以下のコードを JDK1.3.1_04 でコンパイルして、
Borland Optimizeit Profiler にてオブジェクト参照やスタックの
状態を調べてみました。

  JDK1.3.1_04(デフォルト状態 & GCオン)でプロファイリングすると、
確かにwait()の時点でも "0" の Stringだけが回収されずに残ったまま
です。
  しかし、JDK1.4.1_02(デフォルト状態 & GCオン)でプロファイリング
すると、wait()の時点ですべてのStringが回収された状態になります。

  ふーむ...

-------------------------------------------------------------
public class GCTest {
  public static void main(String[] args) {
    GCTest test = new GCTest();
    test.countDown();
  }

  public void countDown() {
    for( int i = 10 ; i >= 0 ; i-- ){
      String tmp = Integer.toString( i );
      System.out.println( tmp );
    }
    synchronized(this){
      try { this.wait(); } catch(Exception ex) {}
    }
  }
}
-------------------------------------------------------------

-- 
高橋智宏
  Java読書会( http://www.t3-jpn.com/bof/ )
  T3-Japan( http://www.t3-jpn.com/ )