[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/ )