根暗シアン

備忘録という名の予防線

JJUG CCC 2018 Spring メモ

JJUG CCC に行ってきた www.java-users.jp

ざっくりわかった気になるモダンGC入門

tomoya yokota さん

今のGC

  • コンパクションGCしないとメモリがフラグメントしちゃう
  • STWしちゃう

新しいGCが必要

  • 巨大ヒープを使うアプリケーションの登場
    • Elastic Searchなど
  • コンパクションGCによる停止がないようにしたい
  • ヒープが大きくなったことによるGCでの停止時間の伸びも大きい

Shenandoah GC

  • OpenJDKのプロジェクト
  • 世代型メモリ管理(New, Old)をしない リージョン型のメモリ管理
  • 並列コンパクションの難しさを解消
  • Compaction GCはしつつ処理は止まらない

ZGC

  • Oracleが開発
  • 数TBのヒープでもGCの停止時間はは単調増加しない
  • Linux 64bitでしか動かない
  • カラーポインタ
    • オブジェクトの状態をカラーとして表現
  • フォワーディングテーブル

Epsilon GC

  • アプリケーションスレッドは停止しない
  • CPU負荷はほとんどなし
  • GCの時間は0
  • なぜなら何もしないGCだから
    • JVM開発用に使われているらしい

Java10まとめと、どうなるJava11

きしだ さん

New Release Model

  • Feature リリース 6ヶ月ごと
  • メンテナンスリリース 3ヶ月ごと
  • LTS 3年ごと JDK11が9月にでる
  • Oracle JDKOracle ユーザしか使えないから OpenJDKを使え

  • Desktop technology

    • JDK11からアプレットJava Web Startはサポートされない
    • JDK11でJavaFXはバンドルされない
      • バンドルされないだけで開発は続く
    • AWT,Swingはサポートされる

JDK 10

  • 型推論がサポートされる
    • varが変数名、メソッド名に使える
    • var a = new Object(){ ... } Kotlinぽい
      • 匿名クラスをメソッド内で定義して使いまわせそう
  • Garbage Collector Interface
    • GCのモジュール化
  • Experimental Java-Based JIT Compiler
    • JVMJavaで作り直すプロジェクト
  • Parallel Full GC
  • Application Class-Data Sharing
  • Thread-Local Handshakes
  • Heap Allocation on Alternative Memory Devices

    • 不揮発性メモリにヒープを割り当てられるようになった性
  • APIの変更

    • java.io.Reader
      • transferTo(Writer) NIOのクラスでやってたことをIOでできる

JDK 11

  • Single-File Soure-Code Programs
  • Raw String Literals

    • バッククウォート3つでRaw Stringが書けるようになる
    • SQL文とか書くときに改行コードとかタブとかそのままかける
  • Switch Expressions

  • HTTP Client
  • JavaEE, CORBAモジュールを除外

  • 便利なAPIが追加されるかも

  • String
    • lines
    • strip
  • Fileの中身比較とか、Fileの内容をStringで返す、Stringをそのまま書き込むとか

平成の次どうする問題

  • がんばる