こんにちは、インメモリ データ グリッドを使用した 150GB ヒープ メモリ プログラムのケースがあります。運用部門から、単一のマシンを使用するというクレイジーな要件があります。これで、並列ガベージ コレクタが 150GB を超えて使用された場合に何が起こるかがわかりました。おそらく、FULL GC が呼び出された場合、数十分のガベージ コレクションになります。
私の希望は、Java 9 で Shenandoah 低一時停止 GC が来ることでした。残念ながら、私が見たところ、Java 9 での配信にはリストされていません。それについて何か知っている人はいますか?
とはいえ、G1 GC がこの量のヒープ メモリに対してどのように機能するのか気になります。
そして最後の質問です。2時間で完了するはずの非インタラクティブなバッチアプリケーションがあるので、言ってみましょう。ここでの主な目標は、フル GC が開始されないようにすることです。メモリが十分にあることを確認した場合、到達可能な最大ヒープが 150 で、250 GB を割り当てると、自信を持ってフル GC がGC が開始されることはありませんか? 通常、新しい世代と古い世代が最大ヒープに達すると、フル GC がトリガーされます。別の方法でトリガーできますか?
この質問が重複していない理由をここで説明しようとします。最初に、150GB ヒープについて話します。これは、質問にまったく異なる次元を追加します。次に、前述の質問にあるように RMI を使用していません。3 つ目は、行間にある G1 ガベージ コレクタについて質問しています。 <32GB ヒープに関する質問は、ヒープ >32GB に関する質問と同じです Java 7 からインスタンス PermSpace が存在しないため、状況が少し変わったことは言うまでもありません。