Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Java SEの動向 2022夏版

Chihiro Ito
September 21, 2022

Java SEの動向 2022夏版

Chihiro Ito

September 21, 2022
Tweet

More Decks by Chihiro Ito

Other Decks in Technology

Transcript

  1. Java SEの動向 2022夏版
    Java仕様勉強会
    2022年 9月21日
    1

    View full-size slide

  2. これまでのJava
    2
    Java SEの動向
    バージョンの推移
    2019 2020 2021 2022
    11 12 13 14 15 16 17 18 19 20
    2023
    最新
    LTS
    最新版 次期

    View full-size slide

  3. Javaの仕様
    ● Java 言語仕様 (JLS)
    ● Java 仮想マシン仕様 (JVMS)
    ● Java Specification Requests (JSR)
    ● JDK Enhancement Proposals (JEP)
    3
    Java SEの動向
    さまざまな仕様

    View full-size slide

  4. Javaの仕様
    ● Java 言語仕様 (JLS)
    ● Java 仮想マシン仕様 (JVMS)
    4
    Java SEの動向
    実装の種類
    OpenJDK OpenJ9
    GraalVM
    実装

    View full-size slide

  5. Javaを提供しているベンダー
    5
    Java SEの動向
    Eclipse Temurin
    Red Hat Build of OpenJDK
    Sap Machine
    OracleJDK
    Oracle OpenJDK
    Azul Zulu
    Liberica JDK
    Microsoft Build of OpenJDK
    Amazon Corretto
    Mandrel
    GraalVM CE
    GraalVM EE
    Eclipse OpenJ9
    IBM OpenJ9
    OpenJDK OpenJ9
    GraalVM

    View full-size slide

  6. ここ数年の進化
    6
    Java SEの動向
    Java 11 ~ 16
    11 12 13 14 15 16
    ● 181: Nest-Based Access Control
    ● 309: Dynamic Class-File Constants
    ● 315: Improve Aarch64 Intrinsics
    ● 318: Epsilon: A No-Op Garbage Collector
    ● 320: Remove the Java EE and CORBA Modules
    ● 321: HTTP Client (Standard)
    ● 323: Local-Variable Syntax for Lambda Parameters
    ● 324: Key Agreement with Curve25519 and Curve448
    ● 327: Unicode 10
    ● 328: Flight Recorder
    ● 329: ChaCha20 and Poly1305 Cryptographic Algorithms
    ● 330: Launch Single-File Source-Code Programs
    ● 331: Low-Overhead Heap Profiling
    ● 332: Transport Layer Security (TLS) 1.3
    ● 333: ZGC: A Scalable Low-Latency Garbage Collector(Experimental)
    ● 335: Deprecate the Nashorn JavaScript Engine
    ● 336: Deprecate the Pack200 Tools and API
    ● 305: Pattern Matching for instanceof (Preview)
    ● 343: Packaging Tool (Incubator)
    ● 345: NUMA-Aware Memory Allocation for G1
    ● 349: JFR Event Streaming
    ● 352: Non-Volatile Mapped Byte Buffers
    ● 358: Helpful NullPointerExceptions
    ● 359: Records (Preview)
    ● 361: Switch Expressions (Standard)
    ● 362: Deprecate the Solaris and SPARC Ports
    ● 363: Remove the Concurrent Mark Sweep (CMS) Garbage Collector
    ● 364: ZGC on macOS
    ● 365: ZGC on Windows
    ● 366: Deprecate the ParallelScavenge + SerialOld GC Combination
    ● 367: Remove the Pack200 Tools and API
    ● 368: Text Blocks (Second Preview)
    ● 370: Foreign-Memory Access API (Incubator)
    ● 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
    ● 230: Microbenchmark Suite
    ● 325: Switch Expressions (Preview)
    ● 334: JVM Constants API
    ● 340: One AArch64 Port, Not Two
    ● 341: Default CDS Archives
    ● 344: Abortable Mixed Collections for G1
    ● 346: Promptly Return Unused Committed Memory from G1
    ● 339: Edwards-Curve Digital Signature Algorithm (EdDSA)
    ● 360: Sealed Classes (Preview)
    ● 371: Hidden Classes
    ● 372: Remove the Nashorn JavaScript Engine
    ● 373: Reimplement the Legacy DatagramSocket API
    ● 374: Disable and Deprecate Biased Locking
    ● 375: Pattern Matching for instanceof (Second Preview)
    ● 377: ZGC: A Scalable Low-Latency Garbage Collector
    ● 378: Text Blocks
    ● 379: Shenandoah: A Low-Pause-Time Garbage Collector
    ● 381: Remove the Solaris and SPARC Ports
    ● 383: Foreign-Memory Access API (Second Incubator)
    ● 384: Records (Second Preview)
    ● 385: Deprecate RMI Activation for Removal
    ● 350: Dynamic CDS Archives
    ● 351: ZGC: Uncommit Unused Memory
    ● 353: Reimplement the Legacy Socket API
    ● 354: Switch Expressions (Preview)
    ● 355: Text Blocks (Preview)
    ● 338: Vector API (Incubator)
    ● 347: Enable C++14 Language Features
    ● 357: Migrate from Mercurial to Git
    ● 369: Migrate to GitHub
    ● 376: ZGC: Concurrent Thread-Stack Processing
    ● 380: Unix-Domain Socket Channels
    ● 386: Alpine Linux Port
    ● 387: Elastic Metaspace
    ● 388: Windows/AArch64 Port
    ● 389: Foreign Linker API (Incubator)
    ● 390: Warnings for Value-Based Classes
    ● 392: Packaging Tool
    ● 393: Foreign-Memory Access API (Third Incubator)
    ● 394: Pattern Matching for instanceof
    ● 395: Records
    ● 396: Strongly Encapsulate JDK Internals by Default
    ● 397: Sealed Classes (Second Preview)

    View full-size slide

  7. ここ数年の進化
    7
    Java SEの動向
    Java 17以降
    17 18 19
    ● 306: Restore Always-Strict Floating-Point Semantics
    ● 356: Enhanced Pseudo-Random Number Generators
    ● 382: New macOS Rendering Pipeline
    ● 391: macOS/AArch64 Port
    ● 398: Deprecate the Applet API for Removal
    ● 403: Strongly Encapsulate JDK Internals
    ● 406: Pattern Matching for switch (Preview)
    ● 407: Remove RMI Activation
    ● 409: Sealed Classes
    ● 410: Remove the Experimental AOT and JIT Compiler
    ● 411: Deprecate the Security Manager for Removal
    ● 412: Foreign Function & Memory API (Incubator)
    ● 414: Vector API (Second Incubator)
    ● 415: Context-Specific Deserialization Filters
    ● 400: UTF-8 by Default
    ● 408: Simple Web Server
    ● 413: Code Snippets in Java API Documentation
    ● 416: Reimplement Core Reflection with Method Handles
    ● 417: Vector API (Third Incubator)
    ● 418: Internet-Address Resolution SPI
    ● 419: Foreign Function & Memory API (Second Incubator)
    ● 420: Pattern Matching for switch (Second Preview)
    ● 421: Deprecate Finalization for Removal
    ● 405: Record Patterns (Preview)
    ● 422: Linux/RISC-V Port
    ● 424: Foreign Function & Memory API (Preview)
    ● 425: Virtual Threads (Preview)
    ● 426: Vector API (Fourth Incubator)
    ● 427: Pattern Matching for switch (Third Preview)
    ● 428: Structured Concurrency (Incubator)
    参考:
    https://openjdk.org/projects/jdk/11/
    https://openjdk.org/projects/jdk/12/
    https://openjdk.org/projects/jdk/13/
    https://openjdk.org/projects/jdk/14/
    https://openjdk.org/projects/jdk/15/
    https://openjdk.org/projects/jdk/16/
    https://openjdk.org/projects/jdk/17/
    https://openjdk.org/projects/jdk/18/
    https://openjdk.org/projects/jdk/19/

    View full-size slide

  8. Javaのプロジェクト
    ● プロジェクトはJavaの進化の大きな方向性を決めている
    ● プロジェクトは検討した内容を少しずつ
    JEPとして進めている
    ● 1つ以上のグループがスポンサーをする
    ● Webコンテンツ、リポジトリ、メーリングリストを持つ
    8
    Java SEの動向
    概要

    View full-size slide

  9. Javaのプロジェクト
    9
    Java SEの動向
    活動中のプロジェクト
    仮想マシン
    ● Project Leyden
    ● Project Lilliput
    ● Portola Project
    ● CRaC
    UI
    ● OpenJFX Project
    ● Wakefield
    可観測性
    ● JDK Mission Control
    ● VisualVM
    GC
    ● Shenandoah
    ● ZGC
    大型プロジェクト
    ● Project Amber
    ● Project Loom
    ● Project Panama
    ● Project Valhalla

    View full-size slide

  10. 10
    各プロジェクトの紹介
    10

    View full-size slide

  11. Project Amber
    ● ゴール
    ○ Java言語の改革
    ○ 生産性を重視した小規模なJava言語機能を調査・改善
    ● スポンサー
    ○ コンパイラ・グループ
    11
    Java SEの動向
    概要
    Project Amber:
    https://openjdk.org/projects/amber/
    ● 特徴
    ○ 少なくとも2回プレビュー
    ○ JEPだけではなく、ガイドや設計メモが公開

    View full-size slide

  12. Project Amber
    12
    Java SEの動向
    JEPs
    Project Amber:
    https://openjdk.org/projects/amber/
    JEP番号 名称 ステータス リリース
    427 Pattern Matching for switch (Third Preview) リリース済み 19
    405 Record Patterns and Array Patterns (Preview) リリース済み 19
    420 Pattern Matching for switch (Second Preview) リリース済み 18
    409 Sealed Classes リリース済み 17
    406 Pattern Matching for switch (Preview) リリース済み 17
    395 Records リリース済み 16
    394 Pattern Matching for instanceof リリース済み 16
    397 Sealed Classes (Second Preview) リリース済み 16
    378 Text Blocks リリース済み 15
    384 Records (Second Preview) リリース済み 15
    375 Pattern Matching for instanceof (Second Preview) リリース済み 15
    360 Sealed Classes (Preview) リリース済み 15

    View full-size slide

  13. Project Amber
    13
    Java SEの動向
    JEPs
    Project Amber:
    https://openjdk.org/projects/amber/
    JEP番号 名称 ステータス リリース
    361 Switch Expressions リリース済み 14
    368 Text Blocks (Second Preview) リリース済み 14
    359 Records (Preview) リリース済み 14
    305 Pattern Matching for instanceof (Preview) リリース済み 14
    355 Text Blocks (Preview) リリース済み 13
    354 Switch Expressions (Second Preview) リリース済み 13
    325 Switch Expressions (Preview) リリース済み 12
    323 Local-Variable Syntax for Lambda Parameters リリース済み 11
    286 Local-Variable Type Inference リリース済み 10
    302 Lambda Leftovers 候補 -
    348 Java Compiler Intrinsics for JDK APIs 候補 -
    301 Enhanced Enums クローズ/差し戻し -
    326 Raw String Literals クローズ/差し戻し -

    View full-size slide

  14. Project Amber
    14
    Java SEの動向
    改善ポイント
    Project Amber:
    https://openjdk.org/projects/amber/
    Object o;
    System.out.println(switch (o) {
    case String s && s.length() >= 5 -> s.toUpperCase();
    case String s -> " %s ".formatted(s);
    case Integer i -> "%,d".formatted(i);
    default -> o.toString();
    }
    Pattern Matching for switch (Second Preview)
    public abstract sealed class Shape
    permits Circle, Rectangle, Square {...}
    Sealed Classes
    record Foo(int x, int y) {}
    Records
    if (x instanceof Integer i) {
    // ここで i を使用できる
    }
    Pattern Matching for instanceof
    var str = """
    You can write
    two line string.
    """;
    Text Blocks
    int numLetters = switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> 6;
    case TUESDAY -> 7;
    case THURSDAY, SATURDAY -> 8;
    case WEDNESDAY -> 9;
    };
    Switch Expressions
    var a = "Foo";
    Local-Variable Type Inference

    View full-size slide

  15. Project Valhalla
    15
    Java SEの動向
    概要
    Project Valhalla:
    https://openjdk.org/projects/valhalla/
    ● ゴール
    ○ Javaのオブジェクトモデルを、値オブジェクトと
    ユーザー定義プリミティブで補強
    ○ オブジェクト指向プログラミングの抽象化と
    単純なプリミティブの性能特性を組み合わせること
    ● スポンサー
    ○ HotSpotグループ
    ● 特徴
    ○ ジェネリクスAPIによる性能向上を維持するために、
    Javaの
    ジェネリクスへの変更で補完
    ○ 以前は Value Types と言ってたものが、 inline-types に
    名前を変えた

    View full-size slide

  16. Project Valhalla
    16
    Java SEの動向
    JEPs
    JEP番号 名称 ステータス リリース
    181 Nest-Based Access Control リリース済み 11
    309 Dynamic Class-File Constants リリース済み 11
    371 Hidden Classes リリース済み 15
    390 Warnings for Value-Based Classes リリース済み 16
    401 Primitive Classes (Preview) 候補 -
    402 Classes for the Basic Primitives (Preview) 候補 -
    - Better-defined JVM class file validation 下書き -
    - Value Objects (Preview) 下書き -
    - Universal Generics (Preview) 下書き -
    - Parametric JVM 下書き作成中 -
    Project Valhalla:
    https://openjdk.org/projects/valhalla/

    View full-size slide

  17. Project Valhalla
    17
    Java SEの動向
    改善ポイント
    Project Valhalla:
    https://openjdk.org/projects/valhalla/
    primitive class Point implements Shape {
    private double x;
    private double y;
    public Point(double x, double y) {
    this.x = x;
    this.y = y;
    }
    public double x() { return x; }
    public double y() { return y; }
    public Point translate(double dx, double dy) {
    return new Point(x+dx, y+dy);
    }
    public boolean contains(Point p) {
    return equals(p);
    }
    }
    Primitive Classes
    jshell> synchronized (LocalDateTime.now()){}
    | 警告:
    | 値ベース・クラスのインスタンスで同期しようとしました
    | synchronized (LocalDateTime.now()){}
    | ^----------------------------------^
    Warnings for Value-Based Classes
    値ベースのクラス例
    ● java.langパッケージのプリミティブラッパークラス
    ● java.lang.Runtime.Versionのクラス
    ● java.utilパッケージの Optinal 関連のクラス
    ● java.time API の日時関連のクラス
    ● java.lang.ProcessHandle インターフェースとその実装クラス
    ● java.util パッケージのコレクションクラスの実装クラス

    View full-size slide

  18. Project Loom
    18
    Java SEの動向
    概要
    Project Loom:
    https://openjdk.org/projects/loom/
    ● ゴール
    ○ 使いやすく、高スループットの軽量並行処理や新しいプログ
    ラミングモデルをサポートすること
    ● スポンサー
    ○ HotSpotグループ
    ● 特徴
    ○ 軽量なユーザモードスレッド
    ○ 限定継続
    ○ 明示的な末尾呼び出し

    View full-size slide

  19. Project Loom
    19
    Java SEの動向
    JEPs
    Project Loom:
    https://openjdk.org/projects/loom/
    JEP番号 名称 ステータス リリース
    425 Virtual Threads (Preview) リリース済み 19
    428 Structured Concurrency (Incubator) リリース済み 19

    View full-size slide

  20. Project Loom
    20
    Java SEの動向
    改善ポイント
    Project Loom:
    https://openjdk.org/projects/loom/
    Response handle() throws ExecutionException, InterruptedException {
    try (var scope = new StructuredTaskScope.ShutdownOnFailure()) {
    Future user = scope.fork(() -> findUser());
    Future order = scope.fork(() -> fetchOrder());
    scope.join(); // 両フォークが終了するのを待機します
    scope.throwIfFailed(); // エラーを伝播します
    // 両フォークが成功したら、その結果を返します。
    return new Response(user.resultNow(), order.resultNow());
    }
    }
    Structured Concurrency (Incubator)
    try (var executor = Executors.newVirtualThreadPerTaskExecutor())
    {
    executor.submit(() -> {
    Thread.sleep(Duration.ofSeconds(1));
    return i;
    });
    } // executor.close() は暗黙的に呼ばれて、待ちます
    Virtual Threads (Preview)

    View full-size slide

  21. Project Panama
    21
    Java SEの動向
    概要
    Project Panama:
    https://openjdk.org/projects/panama/
    ● ゴール
    ○ Java仮想マシンと明確に定義された(
    Javaではない)外部
    APIとの間の接続を改善
    ● スポンサー
    ○ Hotspotグループ
    ● 特徴
    ○ JVMからのネイティブ関数とデータの呼び出し
    ○ JVMの新しいデータレイアウト、ネイティブ メタデータ
    ○ ネイティブ・ライブラリ管理
    ○ ネイティブとJVM側の "フック"
    ○ ネイティブ指向のJIT最適化
    ○ 安全性のためのツールやラッパー

    View full-size slide

  22. Project Panama
    22
    Java SEの動向
    JEPs
    JEP番号 名称 ステータス リリース
    424 Foreign Function & Memory API (Preview) リリース済み 19
    426 Vector API (Fourth Incubator) リリース済み 19
    419 Foreign Function & Memory API (Second Incubator) リリース済み 18
    417 Vector API (Third Incubator) リリース済み 18
    412 Foreign Function & Memory API (Incubator) リリース済み 17
    414 Vector API (Second Incubator) リリース済み 17
    389 Foreign Linker API (Incubator) リリース済み 16
    338 Vector API (Incubator) リリース済み 16
    393 Foreign-Memory Access API (Third Incubator) リリース済み 16
    383 Foreign-Memory Access API (Second Incubator) リリース済み 15
    370 Foreign-Memory Access API (Incubator) リリース済み 14
    Project Panama:
    https://openjdk.org/projects/panama/

    View full-size slide

  23. Project Panama
    23
    Java SEの動向
    改善ポイント
    Project Panama:
    https://openjdk.org/projects/panama/
    static final VectorSpecies SPECIES = FloatVector.SPECIES_256;
    void vectorComputation(float[] a, float[] b, float[] c) {
    for (int i = 0; i < a.length; i += SPECIES.length()) {
    VectorMask m = SPECIES.indexInRange(i, a.length);
    FloatVector va = FloatVector.fromArray(SPECIES, a, i, m);
    FloatVector vb = FloatVector.fromArray(SPECIES, b, i, m);
    FloatVector vc = va.mul(va).
    add(vb.mul(vb)).
    neg();
    vc.intoArray(c, i, m);
    }
    }
    Vector API
    try (MemorySegment segment = MemorySegment.allocateNative(100))
    {
    for (int i = 0 ; i < 25 ; i++) {
    MemoryAccess.setIntAtOffset(i * 4, i);
    }
    }
    Foreign Function & Memory API (Second Incubator)

    View full-size slide

  24. 24
    Java 仮想マシン
    24

    View full-size slide

  25. Project Leyden
    25
    Java SEの動向
    概要
    Project Leyden:
    https://openjdk.org/projects/leyden/
    ● ゴール
    ○ Javaの起動時間とピーク性能までの時間の遅さ、および
    フットプリントの大きさという長期的な問題点に対処
    ○ サイズや起動時間の点でネイティブ実行と遜色ないようにす

    ○ GCやツールを全てサポート
    ● スポンサー
    ○ HotSpot と コアライブラリ・グループ
    ● 特徴
    ○ 静的イメージの概念を導入
    ○ 静的イメージはアプリケーション由来のスタンドアロンプログ
    ラム
    ○ 静的イメージは実行時にクラスのロードや生成はできない

    View full-size slide

  26. Project Lilliput
    26
    Java SEの動向
    概要
    Project Lilliput:
    https://wiki.openjdk.org/display/lilliput
    ● ゴール
    ○ メモリフットプリントを削減し、パフォーマンス向上
    ● スポンサー
    ○ HotSpotグループ
    ● 特徴
    ○ オブジェクトヘッダを128ビットから64ビットへ小型化
    ○ 32ビットを目指せるかもしれない
    ○ ヘッドレイアウトを柔軟にし、ビルド時や起動時にビットの使
    い方を設定できるようにする

    View full-size slide

  27. Project Lilliput
    27
    Java SEの動向
    モチベーション
    Project Lilliput:
    https://wiki.openjdk.org/display/lilliput
    ● 64bit HotspotではJavaオブジェクトは多目的ヘッダ(64bit)とクラスポインタ(64bit)を持つ
    ● 典型的なオブジェクトの平均サイズ(ヘッダ含む)は 5~6 ワード(内ヘッダは上記2ワード)
    ● ヘッダを小さくすることで大規模なアプリも、コンテナなど小規模なアプリでも効率よくできる
    ● 以下を実現可能にする
    ○ ヒープ使用量の削減
    ○ オブジェクトの割り当て率の向上
    ○ GCの削減
    ○ CPUキャッシュの向上

    View full-size slide

  28. Portola Project
    28
    Java SEの動向
    概要
    Portola Project:
    https://openjdk.org/projects/portola/
    ● ゴール
    ○ Alpine Linux へのJDKの移植
    特にmusl Cライブラリへの移植
    ● スポンサー
    ○ Portersグループ
    ● 特徴
    ○ 非常に軽量な Linux でも動くようにする
    ○ コンテナなど軽量が好ましい技術と組み合わせやすい

    View full-size slide

  29. CRaC Project
    29
    Java SEの動向
    概要
    CRaC Project:
    https://wiki.openjdk.org/display/crac
    ● ゴール
    ○ Javaプログラムの実行中にJavaインスタンスを
    チェックポイント (イメージ化やスナップショット) する仕組み
    で、Javaプログラムの連携を研究
    ● スポンサー
    ○ HotSpot グループ
    ● 特徴
    ○ 起動時の問題を解決するために、イメージから復元

    View full-size slide

  30. 30
    可観測性
    30

    View full-size slide

  31. Mission Control Project
    31
    Java SEの動向
    概要
    JDK Mission Control:
    https://openjdk.org/projects/jmc/
    ● ゴール
    ○ OpenJDK および Oracle JDK 用のツール群で、本番環境
    を対象としたプロファイリングと診断に焦点
    ● スポンサー
    ○ HotSpotグループ
    ● 特徴
    ○ JDK Flight Recorderが生成した記録を参照するために使
    用されるクライアントツール
    ○ JDK Mission Controlには、他にもJMXコンソールや
    HPROF-dumpアナライザーなどのツールも含まれる

    View full-size slide

  32. VisualVM Project
    32
    Java SEの動向
    概要
    VisualVM Project:
    https://openjdk.org/projects/visualvm/
    ● ゴール
    ○ VisualVMを作成するプロジェクト
    ● スポンサー
    ○ JMXグループ
    ● 特徴
    ○ Java 1.4から使える

    View full-size slide

  33. 33
    ユーザインターフェース
    33

    View full-size slide

  34. OpenJFX Project
    34
    Java SEの動向
    概要
    OpenJFX Project:
    https://openjdk.org/projects/openjfx/
    ● ゴール
    ○ 次世代Javaクライアントツールキットを構築すること
    ● スポンサー
    ○ Swingグループ
    ● 特徴
    ○ 現代的で効率的、そして完全な機能を備えたツールキットを
    生み出す

    View full-size slide

  35. Wakefield
    35
    Java SEの動向
    概要
    Wakefield:
    https://openjdk.org/projects/wakefield/
    ● ゴール
    ○ Waylandディスプレイサーバーのサポートを実現する
    ● スポンサー
    ○ クライアント・ライブラリ・グループ
    ● 特徴
    ○ Wayland上でX11互換モードでJDKを動作させるための短
    中期的な解決策
    ○ WaylandのネイティブクライアントとしてJDKを動作させる
    ための中長期的な解決策

    View full-size slide

  36. 36
    ガベージ・コレクション
    36

    View full-size slide

  37. Shenandoah
    37
    Java SEの動向
    概要
    Shenandoah:
    https://openjdk.org/projects/shenandoah/
    ● ゴール
    ○ 超低休止時間で、実行中の業務処理と並行して多くの
    GC
    作業を行うことで、GCによる休止時間を短縮
    ● スポンサー
    ○ HotSpotグループ
    ● JEP
    ○ 189: Shenandoah GC
    ● 特徴
    ○ オブジェクトの並行マーキングを行う
    CMSとG1に
    加え、Shenandoahは並行コンパクションを追加
    ○ 休止時間はヒープサイズに正比例しない

    View full-size slide

  38. ZGC
    38
    Java SEの動向
    概要
    ZGC:
    https://openjdk.org/projects/zgc/
    ● ゴール
    ○ 拡張性に富み、低遅延のGC
    ● スポンサー
    ○ HotSpotグループ
    ● JEP
    ○ 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
    ○ 377: ZGC: A Scalable Low-Latency Garbage Collector (Production)
    ● 特徴
    ○ 8MBから16TBのヒープを扱える
    ○ 最大停止時間はms未満を目指す
    ○ 並行処理、リージョンベース、コンパクティング、
    NUMAを意
    識、カラーポインタとロードバリアを利用

    View full-size slide

  39. 39
    Red Hat is the world’s leading provider of enterprise
    open source software solutions. Award-winning
    support, training, and consulting services make
    Red Hat a trusted adviser to the Fortune 500.
    Thank you

    View full-size slide