• 締切済み

Javaのgcについて

JDK1.4.2.11について質問します。 System#gc、Runtime#gcでgcを促した場合、発生するGCは必ずFull GCになるのでしょうか。どこかのドキュメントに記述があればそれを教えて下さい。あるいは、そのことはどうしたら確認できるでしょうか。]

みんなの回答

回答No.2

System#gc、Runtime#gcの仕様はドキュメントに書いてあること、 それ以上でもそれ以下でもないのではないかと思いますが……? 以下引用です。 "メソッドの呼び出しから制御が戻るのは、Java 仮想マシンが、破棄されたオブジェクトが占有していたスペースを最大限まで回復し終えたときです。" "メソッド呼び出しから制御が戻された時点で、仮想マシンは破棄されたオブジェクトをすべて再利用するよう最善を尽くしたことになります。"

参考URL:
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/Runtime.html#gc()
全文を見る
すると、全ての回答が全文表示されます。
回答No.1
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • JVMとGCのversion毎の機能の違いについて。

    よろしくお願いします。 質問ですが、JVMとGCのversion毎の機能の違いについて教えて下さい。 具体的には、JDK1.2、1.3、1.4それぞれのJVM機能の違い、また、JDK1.2、1.3、1.4それぞれのGC機能の違いを詳しく知りたいです。 どなたかご教授ください。 お願いします。

  • メモリの確保とgcについて?

    gcのタイミングとか、その判断基準の話になるのかもしれません。下記の2つのクラスの実行結果の違いがなぜおきるのかわかりません。 理解できる方、解説お願いします。 WindowsXPでエクリプス上で実行しています。実行時のメモリはデフォルトの64MBのままです。 コンパイラ実行環境は1.4系です。 ●テスト・クラス変数1、結果 ◆VM 確保Total:17MB ◆VM 確保Total:44MB ◆VM 確保Total:46MB ◆VM 確保Total:46MB ◆VM 確保Total:46MB ◆VM 確保Total:46MB ●テスト・クラス変数2、結果 ◆VM 確保Total:33MB java.lang.OutOfMemoryError Exception in thread "main" 全部張ると800文字を超えてしまうのでソースの一部のみを記述します。 // クラス変数として宣言、両クラスで共通 private static HashMap map; // テスト・クラス変数1 // mainメソッド中でこの記述が6回記述 map = new HashMap(4000000); map.put("1", "いちご"); System.out.println("◆VM 確保Total:" + Runtime.getRuntime().totalMemory() / 1024 / 1024 + "MB"); // テスト・クラス変数2 // mainメソッド中でこの記述が4回記述 map = new HashMap(5000000); map.put("1", "いちご"); System.out.println("◆VM 確保Total:" + Runtime.getRuntime().totalMemory() / 1024 / 1024 + "MB");

    • ベストアンサー
    • Java
  • JAVAについて。コンパイルができません

    public class Main { public static void main(String[] args){ System.out.println("Hello World"); } } 上のソースで記述して、コマンドプロンプトでコンパイルしようとすると 下のような表示が起きます C:\Program Files\Java\jdk-12.0.1\bin>javac Main.java Main.java:1 エラー: Mainの書き込み中にエラーが発生しました: C:\Program Files\Java\ jdk-12.0.1\bin\Main.class public class Main { ^ エラー1個 何が原因でコンパイルされないかわからないです。 わかるかたいましたらよろしくお願いします。

  • Javaのインストールについて

    ノートパソコンを先日買いました。 さっそくJava(JRE,JDK)をインストールしようと思うんですけど、インストールするときは、元から入ってるJavaをアンインストールしなければいけないということを聞きました。 そこで、質問なんですが、コントロールパネルのプログラムの追加と削除を見ると、J2SE Runtime Environment 5.0 Update 2というのがあるんですけど、これを削除しろってことなのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • JAVAのアップデートについて

    こんにちは、お世話になります。 JAVAと言うものを理解していない者が質問するのもいけないのですが・・・ アップデートできますよ、とポップアップしてきましたので指示通り進めたのですが、途中でこのようなメッセージが出て進めなくなりました。 『ソースファイルが見つかりません。C:\Documents and Settings\○○○\Local Settings\Temporary Internet Files\Content.IE5\...\jp150050[1].cab ファイルが存在するか、およびこのファイルへのアクセス権があるかどうかを確認してください』 関係ないかもしれませんが、プログラムの追加と削除には以下の物がありました事を追記致しておきます。 J2SE Runtime Environment 5.0 Update 2 J2SE Runtime Environment 5.0 Update 4 Java 2 Runtime Environment,SE v1.4.2_01 Java 2 Runtime Environment,SE v1.4.2_04 Java 2 Runtime Environment,SE v1.4.2_05 Java 2 Runtime Environment,SE v1.4.2_06 この先どうすればいいか教えて下さいませ。

  • GCログに日付時刻を表示したい

    GCログを取得するために、Tomcatの起動シェルstartup.shに次の記述を入れています。 export CATALINA_OPTS="-XX:+PrintGCTimeStamps -XX:+PrintGCDetails -verbose:gc" これから出力されるログには、Tomcat起動時からの経過時間が表示されます。 経過時間では何時何分何秒にCGが発生したのか計算する必要があり、たいへんです。 GC発生の日時が表示できるようにするにはどうしたらよいのでしょうか。 よろしくご教授ください。

    • ベストアンサー
    • Java
  • javaのjdkについて

    パソコンは初心者なのですが、javaでプログラミングをしてみたいと思ってjavaホームページでjdkなるものをダウンロードしインストールしたのですがうまく起動してくれません。 一応参考手順などを見て、インストール後のパスの取得やjdkのドキュメントもダウンロード、インストールしました。 何がいけないんでしょうか?それとも何かやり方があるのでしょうか? 初心者なので的外れな質問しているかもしれませんが、わかる方いたらご返答願います!

  • ServletからバックグラウンドでJavaを走らせたい

    Javaのバッチをコマンドラインからでなく、Servletから非同期で走らせたいのですが、うまくいきません。 多数サイトを見ましたが引数なしの場合でも、JavaをServletのバックグラウンドで走らせる事はできませんでした。5時間はまっています(T_T) Process process = Runtime.getRuntime().exec("java C:\\java\\src\\batch\\testJava argv01 argv02"); ■環境は、JDK1.4.1、Tomoat4.1.6、Windos2000で、 javaを打ち間違えたら、例外が発生したのでjavaだけはとりあえずパスがとおっているようです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Javaについてですが・・・

    Javaについて質問です。 JDKがバージョンアップした場合、古いバージョンと新しいバージョンを組み合わせることは可能ですか?(開発環境によって変わる?) また、JDKのバージョンアップに伴いWebサーバなどに影響はでませんか?

    • ベストアンサー
    • Java
  • java.util.Date()メソッドについて

    Javaによるプログラミングについて、初歩的な部分で質問があり投稿させていただきました。 使用しているOSはWindowsXP Homeです。 現在PCにインストールされているJDKのバージョンはjdk1.6.0_03、JREのバージョンはjre1.6.0_03です。 Javaプログラムのコードはメモ帳で記述し、コマンドプロンプトからjavacでコンパイルを行っています。 さて、 System.out.println(new java.util.Date()); のようなコードを書いてコンパイルし実行した場合に、表示される時間がJSTではなくGMTになってしまい困っています。 java.util.Calenderを用いれば解決することは分かっているのですが、どうにも気になってしまったので、何か解決する術があればと思い、質問させていただきました。 ちなみに、システムのタイムゾーンは東京になっています。