AJDK 8.0.0 Release Notes

11205 ワード

ここに記入して、テストしやすいです.

バージョン番号

$ java -version
java version "1.8.0_66"
OpenJDK Runtime Environment (Alibaba 8.0.0) (build 1.8.0_66-b60) OpenJDK 64-Bit Server VM (Alibaba 8.0.0) (build 25.66-b60, mixed mode)

マルチテナント(Technical Preview)


マルチテナントJDKは、JVMの仮想化/リソース分離機能により、コンテナのマルチテナントをサポートし、複数のアプリケーションが同じ「マルチテナント」コンテナに同時に配置され、互いに影響を受けずに配置され、必要な配置密度を向上させることで、リソース使用率をより大きく向上させ、単一アプリケーションの配置コストを削減することができます(マルチテナントサポートが必要な場合は、JVMチームに連絡してください).
CPU分離追加コマンドラインオプション/-XX:+TenantCpuThrottling/、単一テナントに対するcpu割当機能をオンにします.デフォルトで閉じ、再起動が有効になります.
メモリ分離追加コマンドラインオプション/-XX:+TenantHeapThrottling/、単一テナントに対するメモリ分離、制限機能をオンにします.現在、この機能はG 1ゴミ回収ポリシーのみをサポートしています.デフォルトで閉じ、再起動が有効になります.テナントコンフィギュレーションクラスでは各テナントが使用するメモリ上限を設定できます.テナントが使用するメモリが指定した上限を超えると、JVMはFull GCをトリガーしてそのテナントのメモリ制限を満たすためにスペースを回収しようとします.GC後も満たされない場合は、メモリを割り当てるスレッドからOutOfMemoryErrorエラーが放出されます.

ツール


jcmd拡張
JavaAgentを追加loadとAgentLib.loadの2つのコマンドは、ユーザーがコードを書かずにjava agentとjvmti agentの動的ロードを実現することができます.

診断と制御


ホットスポットの大きい方法を追跡して、方法によって情報を追跡して、Method Sizeを減らして、JITの内部接続の有効性を高めて、それによってホットスポットの方法の性能を高めます
コマンドラインオプション-XX:+TraceBigHotMethodは、標準出力でバイトコードサイズが大きく、頻繁に呼び出される方法を印刷するために使用されます.既定はオフで、ダイナミックに開くことができます.

例外的に失われたStackTraceの取得
デフォルトモードでは、JVMはホットスポットExceptionスタックの生成を無視します.ユーザーは、実行時にjinfoなどのツールを動的に使用してOmitStackTraceInFastThrowをfalseに調整し、完全なExceptionのStackTrace(高度な特性、JVMチームの指導の下で使用)を得ることができます.

大配列配分によるGC問題
コマンドラインオプション-XX:ArrayAllocationWarningSize=xxx、デフォルト512 Mを追加します.スタックに大きなオブジェクトを割り当てるサイズがこの値を超えると、標準出力に大きな配列の割り当てスタックが印刷され、大きな配列の割り当てによるGCの問題を調べるために使用されます.

DirectMemory使用警告
コマンドラインオプション-X:DirectMemoryUsageWarningRatio=xxxを追加し、direct memoryの最大値(MaxDirectMemory)に占めるdirect memoryの割合がこの値を超えた場合、割り当てられたdirect memoryが最大値を超えたことによるGCの問題を調べるために、標準出力にログを印刷します.

GC問題支援調査
ユーザーは、実行時にjinfoなどのツールを動的に使用してGC関連パラメータ:DisableExplicitGC、ExplicitGCInvokesConcurrent、PrintJNIGCStallsを変更し、GCの問題のトラブルシューティングと解決を支援できます.

JVM Crash Logの強化
AJVMのcrashログでは、異常時pc前後のアセンブル命令を印刷し、JVM CrashのRoot Causeのトラブルシューティングを支援します.

パフォーマンスの最適化


CMSフルGC並列化
CMSアルゴリズムに新しい並列FullGCアルゴリズムを追加し、デフォルトでオフにします.このgcアルゴリズムは、起動パラメータの明示的な設定オプション-XX:+CMSParallelFullGCで有効にできます.オンにすると、CMSアルゴリズムを適用する場合、FullGCをトリガすると、FullGCのダウンタイムを大幅に低減することができ、FullGCスレッド数は-XParallelGCThreads=xで指定でき、CMSのminor gcスレッド数と一致する.

空きJava Heapを物理メモリに返却し、メモリの使用効率を向上させ、アプリケーションの導入密度を向上させる
コマンドラインオプション-XX:+DellocateHeapPagesを使用すると、CMSは使用しないHEAPを物理メモリに返すことができます.既定はオフで、動的に変更できます.(注:ReclaimMostNativeMemoryパラメータを使用していた場合は、DellocateHeapPagesに変更してください).

ParNew YGC最適化
ParNewGCでのタスクの盗難ポリシーを改善し、新しいHotspotコマンドラインオプション-XX:StealingFailureThreshold=xxxを追加します.デフォルト値は10です.失敗回数>10の場合、タスクの盗難を放棄し、ParNewGCでのタスクの割り当てムラによるCPUの浪費を改善します.

CRC32C
x 86_ベース64ハードウェア命令、より優れたintrinsicのCRC 32 C API、一時的なデータ検証はCRC 32からCRC 32 Cに変更することができる.永続的なデータは互換性を考慮し、変更は推奨されません.(ただし、TCRC 32 Cを使用している場合は、CRC 32 Cを使用してください)
Nativeメモリの最適化、ユーザーアプリケーションの透過性
jemallocを使用すると、nativeメモリ割り当ての効率が向上し、システムメモリの使用率が向上します.次のバージョンではjemallocに基づいてnativeメモリ診断機能が提供されます.

JNI呼び出し最適化、ユーザー応用透明
x 86_の調整64プラットフォームの下でJNIがJIT後に生成されたコードの分岐順序を呼び出し、流水ラインの停止を減らすことでJNI呼び出し性能を向上させる.

アプリケーションプログラミングインターフェース(API)の追加


JNIスレッド情報の取得
JMMプログラミングインターフェース「GetThreadJNIEnvInfo」が追加され、JNIからすべてのスレッドに関する情報をすばやく取得できます(高度なプロパティ、JVMチームの指導の下で使用).

バグ修復


JDK-8048556 - [ref: 5]JDK-8139549 - [ref: 6]

トライアル機能


Symbol Translation Service
Hotspotコマンドラインオプション-XX:+UseSymbolTranslationを追加し、pc値に基づいてパフォーマンスprofilingツールをサポートするための対応するメソッドsymbol情報を取得できます.
NOTES:必要に応じてJVMチームに連絡してください
G 1の大きいオブジェクトの分配を追跡して、G 1の使用する性能を高めます
G 1 GCポリシーを使用する場合、Humongousオブジェクトの割り当てはG 1のパフォーマンスを大きく傷つけ、コマンドラインオプション-XX:+TraceG 1 HObjAllocationを使用して、標準出力で大きなオブジェクトの割り当てスタックを印刷します.ユーザは、これらのTrace情報に基づいて、アプリケーションレベルで大きなオブジェクトの割り当てを低減する、G 1の効率を向上させることができる.

アップグレードウィザード


Springを3.2.9以上にアップグレードします(jdk 8の完全な新しい特性を使用する場合は、springを4.xに、servletを3.xにアップグレードすることをお勧めします)webxアプリケーションspring 4を使用する場合は、webxのアップグレードをお勧めします.参考:http://gitlab.alibaba-inc.com/middleware-container/citrus/wikis/webx-spring4-jdk8orgがあればProjectlombok:lombok、1.14にアップグレードします.X、1.16にアップグレードしないでください.x orgがある場合eclipse.jdt.core.compiler:ecj、4.4.2以上にアップグレード現在グループの多くの二者パッケージはspring 2に依存している.x,両方のバッグは簡単にspring 2.x導入.除外spring 2.x,この空のパケットを利用して排除することを強くお勧めします.
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring</artifactId>
    <version>999-not-exist</version>
  </dependency>

起動パラメータ調整:jdk 8はPerm領域を除去しているので、PermSizeはMetaspaceSize、MaxPermSizeはMaxMetaspaceSizeに変更されます.また、次のパラメータはjdk 8ではサポートされていません.警告が表示されます.削除を推奨します.U s e C m s c o m p a ctAtFullCollectionとCMSFullGCsBeforeCompaction