web-dev-qa-db-ja.com

UseConcMarkSweepGCは非推奨になりましたが、代替品は何ですか?

JavaプログラムはJRE 10.0.2でこの警告を出します:

Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.

このスイッチの推奨代替品は何ですか?

9
hoosierEE

CMSのサポートを削除してからCMSコードを削除するか、少なくともより徹底的に分離することで、GCコードベースのメンテナンスの負担を軽減し、新しい開発を加速します。 G1ガベージコレクターは、長期的には、CMSのほとんどの用途を置き換えることを目的としています。

公式JEPから

5
Eugene

CMSアルゴリズムを使用している場合、次のソリューションが与えられます このブログで

  1. G1 GCアルゴリズムへの切り替え:G1 GCは、Java 9。 CMS GCアルゴリズムよりも優れたパフォーマンス特性を提供する可能性があります。比較的少数の引数があるため、調整がはるかに簡単です。また、メモリから重複文字列を削除するオプションを提供します。 、全体的なメモリフットプリントを削減するのに役立つ場合があります。

  2. Z GCアルゴリズムへの切り替え:Z GCは、スケーラブルな低遅延のガベージコレクターです。その目標は、GCの一時停止時間を10ミリ秒未満に保つことです。 Z GCアルゴリズムの早期アクセスは、Java 11、12.で利用可能です。したがって、アプリケーションがJava 11、12.で実行されている場合、Z GCアルゴリズム:Z GCの予備分析では、優れた結果が示されています。

  3. CMSで続行:特定のアプリケーションでは、CMSが壮大な結果を配信し、多くのチューニングを行ってもG1 GCに一致しませんでした。したがって、他の2つのオプションを検討し、CMSアルゴリズムが天国でのアプリケーションのために作られたものであると確信している場合:-)、CMSアルゴリズム自体で実行することを検討できます。このOpenJDK JDK9-devメーリングリストには、CMSを存続させ続ける議論さえあります。私の個人的な経験では、Java 1.1で非推奨になった機能とAPIが、Java 12(20年後でも) )。すべての非推奨のAPIと機能は存続しているようです(死ぬことはありません)。したがって、CMSでの実行を継続することもオプションです。

3
Jim T

ソリューションは次のとおりです このブログで指定 、CMSアルゴリズムを使用している場合:

(1)。 G1 GCアルゴリズムに切り替える

G1 GCは、Java 9.以降、デフォルトのGCアルゴリズムになっています。したがって、アプリケーションをこのアルゴリズムに移行することを検討できます。CMSGCアルゴリズムよりも優れたパフォーマンス特性を提供できます。また、メモリから重複した文字列を削除するオプションも提供されます。重複した文字列を削除できる場合、全体的なメモリフットプリントを削減するのに役立ちます。

(2)。 Z GCアルゴリズムに切り替える

Z GC は、スケーラブルな低遅延のガベージコレクターです。その目標は、GCの一時停止時間を10ミリ秒未満に保つことです。 Z GCアルゴリズムの早期アクセスは、Java 11、12.で利用可能です。したがって、アプリケーションがJava 11、12.で実行されている場合、Z GCアルゴリズム:Z GCの予備分析では、優れた結果が示されています。

(3)。 CMSに進む

特定のアプリケーションでは、多くのチューニングを行ってもG1 GCとは一致しない素晴らしい結果を提供するCMSがあります。したがって、他の2つのオプションを検討し、CMSアルゴリズムが天国でのアプリケーションのために作られたものであると確信している場合:-)、CMSアルゴリズム自体で実行することを検討できます。この OpenJDK JDK9-devメーリングリスト には、CMSを存続させ続ける引数さえあります。私の個人的な経験では、Java 1.1で非推奨になった機能とAPIが、Java 12(20年後でも) )。すべての非推奨のAPIと機能は存続しているようです(死ぬことはありません)。したがって、CMSでの実行を継続することもオプションです。

1
Ram Lakshmanan