プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
java -verbose:ge クラス名
で実行したところ
[GC 511K->372K(960K), 0.0297021 secs]
[GC 849K->829K(1344K), 0.0320455 secs]
[Full GC 829K->829K(1344K), 0.0650338 secs]
[GC 1277K->1237K(1852K), 0.0499598 secs]
[GC 1749K->1749K(2272K), 0.0198444 secs]
[Full GC 1749K->1749K(2272K), 0.0806215 secs]
のような結果を得ましたが、
これはどのようにみればよいのかがわかりません。

見方もしくは解説があるサイトを教えていただけますか?

A 回答 (2件)

FullGCはJavaVMが確保しているメモリ空間全てに対して


開放できるメモリがないか調査します。
一般的に処理時間が多くかかる傾向にあります。

それに対しGCは一部分(世代管理されていれば新世代だけといったもの)
に対してメモリチェックを行います。
細かいことは各種JavaVMでのGCの実装によって違うので
はっきりとはいえません。

ちなみにFullGCはSystem.gc()を使って意図的に発生させることができます。

メモリ変化がない場合は文字通りGCを行っても
メモリを開放できる部分が無かったことを表します。
既にメモリ開放された状態で意図的にSystem.gc()を使い
FullGCを発生させてもメモリ変化がないケースがあるといえます。

質問の例では、なぜそのような現象が起こるかは
別途調査が必要かもしれませんが、ただ単にJavaVMの
GCアルゴリズムが良くないのかもしれません。
    • good
    • 0
この回答へのお礼

なるほど。。。

わかりました!
ありがとうございました。

>各種JavaVMでのGCの実装によって違うので
はっきりとはいえません。

これってJavaの質問の際によくでてくるフレーズですね。
キーワードですね!

お礼日時:2003/09/22 13:55

>[GC 511K->372K(960K), 0.0297021 secs]



これを例にとると

1.GCが行われた
2.メモリ使用量511Kbytes
3.GC後メモリ使用量372Kbytes
4.javaVMが確保しているメモリ空間は960Kbytes
5.GCにかかった時間は0.0297021秒

補足
Runtimeクラスのメソッドで同様の情報が取得できます。

参考URL:http://java.sun.com/j2se/1.3/ja/docs/ja/api/java …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

あとFullGCと普通のGCの違いはどう違うのでしょうか?
[Full GC 829K->829K(1344K), 0.0650338 secs]
[GC 1277K->1237K(1852K), 0.0499598 secs]
の部分ではGC後使用メモリに変化がないのですが、
これはどういうことでしょうか?

お礼日時:2003/09/21 00:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!