JavaRush /Java Blog /Random-JA /コーヒーブレイク #132。JDK の最新のガベージ コレクターである ZGC を見てみましょう。JavaのHas...

コーヒーブレイク #132。JDK の最新のガベージ コレクターである ZGC を見てみましょう。JavaのHashMap、LinkedHashMap、TreeMapの違いは何ですか

Random-JA グループに公開済み

JDK の最新のガベージ コレクターである ZGC の紹介

出典: Inside Java ZGC または Z ガベージ コレクターは、JDK の最新のガベージ コレクターです。これはもともと実験的な機能として JDK 11 に登場しました。JEP 377 の拡張が承認された後、ZGC は JDK 15 の製品機能となりました。この記事では、ZGC の目標と将来について見ていきます。 コーヒーブレイク #132。 JDK の最新のガベージ コレクターである ZGC を見てみましょう。 Java の HashMap、LinkedHashMap、TreeMap の違いは何ですか - 1

ZGC レビュー

ZGC は、スケーラブルで低遅延のガベージ コレクターとして設計されています。ZGC 動作中の最大休止時間は 250 マイクロ秒を超えることはほとんどなく、まさにマイクロ秒であり、平均休止時間は数十マイクロ秒です。ZGC はスケーラビリティが高く、最小ヒープ サイズは 8 MB ~ 16 TB です。一時停止時間はヒープ サイズによって増加しないことに注意することが重要です。したがって、ヒープのサイズが数テラバイトであっても、一時停止時間はマイクロ秒単位で測定されます。ZGC は低レイテンシと高いスケーラビリティを提供しますが、スループットが犠牲となり、G1 と比較して約 10% 低くなります。正確なスループットの削減は、アプリケーションの設計、システム アーキテクチャ、およびビジネス ニーズによって異なります。

ZGCの使用

G1 は JDK 9 以降のデフォルトのガベージ コレクターであるため、ZGC を使用するには VM フラグ -XX:+UseZGC を設定する必要があります。ZGC を使用する場合、最も重要な設定は最大ヒープ サイズ -Xmx を設定することです。ヒープ サイズは、アプリケーションのライブ セットを処理できるのに十分な大きさである必要があります。また、ガベージ コレクションを実行するために追加の予約も必要です。ヒープ上で利用可能なスペースが増えるほど、ガベージ コレクションが必要になる頻度が減ります。ただし、これはメモリ使用量とのバランスを取る必要があることに注意してください。

ZGCの更なる発展

JDK 15 の実稼働機能としてリリースされて以来、ZGC は積極的に開発され続けています。JDK 16 のリリースでは、スレッド スタック並列処理 (JEP 376) が導入され、JDK 18 では追加機能として行重複排除が追加されました。将来的には、ZGC が複数世代になることが計画されていますが、この改善を実施するための具体的な時期はまだ確立されていません。

ZDC の詳細情報

JavaのHashMap、LinkedHashMap、TreeMapの違いは何ですか

出典: Rrtutors Java プログラムにキーと値のペアを保存したい場合、Java コレクションはニーズに応じて多くのオプションを提供します。これらには、LinkedHashmapHashMap、およびTreeMapが含まれます。これら 3 つのクラスの主な違いは、内部実装と、場合によっては特定のアプリケーションにあります。 コーヒーブレイク #132。 JDK の最新のガベージ コレクターである ZGC を見てみましょう。 Java の HashMap、LinkedHashMap、TreeMap の違いは何ですか - 2

Java の HashMap、LinkedHashMap、TreeMap の違い

ここでは、実装、順序付け、ソート、および null キーと値のサポートに基づく、前述の 3 つのクラスの主な違いを示します。

実装

HashMapLinkedHashMap はどちらもMapインターフェイスを実装し、TreeMap はMapNavigableMap 、および vSortedMap インターフェイスを実装します。 LinkedHashMapは二重リンク リスト バケットとして実装され、HashMapはハッシュ テーブルとして実装され、TreeMapはツリーとして実装されます。

注文と仕分け

  • HashMap は反復の順序に関して保証しません。ただし、新しい要素が追加されると完全に変わる可能性があります。

  • LinkedHashMap は、エントリがマップに配置された順序で反復されます。

  • TreeMap は、compareTo()メソッド(または外部 Comparator)に従って、キーの「自然な順序」に従って反復します。また、ソート順序に依存するメソッドを含むSortedMapインターフェースも実装します。

Null キーと値

HashMapsLinkedHashMap はキー値だけでなく null 値もサポートしますが、TreeMap は自然な要素タイプをサポートするため、null 値をサポートしません。視覚的な例として、HashMapLinkedHashMap、およびTreeMapを作成してみましょう。
import java.util.HashMap;

import java.util.LinkedHashMap;

import java.util.Map;

import java.util.TreeMap;

public class HashMap_LinkedHashMap_TreeMap {

            public static void main(String[] args) {

                  Map Treemapu = new TreeMap();

                  Treemapu.put("First", "Java");

                  Treemapu.put("Second", "Python");

                  System.out.println("TreeMap values are: \n" + Treemapu);

                  Map Hashimapu = new HashMap();

                  Hashimapu.put("First", "Java");

                  Hashimapu.put("Second", "Python");

                  System.out.println("HashMap Values are: \n" + Hashimapu);

                  Map LinkedHashiMapu = new LinkedHashMap();

                  LinkedHashiMapu.put("First", "Java");

                  LinkedHashiMapu.put("Second", "Python");

                  System.out.println("LinkedHashMap values are: \n" + LinkedHashiMapu);

            }

}
出力では次のものが得られます。
{First=Java, Second=Python} HashMap 値は次のとおりです: {Second=Python, First=Java} LinkedHashMap 値は次のとおりです: {First=Java, Second=Python}
したがって、3 つのクラスはすべて一意のキーから値へのマッピングを表すため、Mapインターフェイスを実装します。
  • HashMapはキー ハッシュに基づくマップです。O(1) の get/put 操作をサポートします。キーには、一貫したhashCode()およびquals()の実装が必要です。

  • LinkedHashMapはHashMapに非常に似ていますが、要素が追加される (またはアクセスされる) 順序があるため、反復順序は配置順序 (設計パラメータに応じてアクセス順序) と同じになります。

  • TreeMapはツリーベースのマッピングです。その put/get 操作には O(log n) 時間がかかります。これには、要素に比較またはコンパレータのいずれかによる何らかの比較メカニズムが必要です。反復の順序はこのメカニズムによって決定されます。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION