診断ガイド

     前  次    目次     
コンテンツの開始位置

パート 1 Oracle JRockit JDK の概要

Oracle JRockit JDK について

JRockit JVM とは

JDK について

JRockit JDK バージョン

JRockit JDK がサポートするプラットフォーム

互換性情報

JRockit JDK インストールの内容

開発ツール

デモ

C ヘッダ ファイル

Java Runtime Environment (JRE)

Java 仮想マシン (JVM)

Java SE JRE の標準機能

JRE クラス ファイルに関する注記

追加のライブラリ

サンプル

Attach API のサポート

Oracle JRockit のドキュメント

JRockit JVM のコマンドライン オプション

JRockit JDK および JRockit Mission Control へのサポート

JIT コンパイルと最適化の概要

「ブラック ボックス」以外のもの

JRockit JVM によりコードのコンパイル方法

1. JRockit JVM が JIT コンパイルを実行する

2. JRockit JVM がスレッドをモニタする

3. JRockit JVM が最適化を実行する

コード最適化を示す例

クラス A を最適化するためのステップ

メモリ管理の概要

ヒープとナーサリ

オブジェクト割り当て

ガベージ コレクション

マーク アンド スイープ モデル

モーストリ コンカレント マーク アンド スイープ

パラレル マーク アンド スイープ

世代別ガベージ コレクション

動的または静的なガベージ コレクションのモード

圧縮

外部および内部の圧縮

スライディング ウィンドウの概要

圧縮領域のサイズ設定

スレッドとロックの概要

スレッドの概要

Java スレッドのデフォルト スタック サイズ

JVM 内部スレッドのデフォルト スタック サイズ

ロックの概要

スピンとスリープ

ロック チェーン

ロック チェーンのタイプ

開いたチェーン

デッドロック チェーン

ブロックされたチェーン

Oracle JRockit JDK へのアプリケーションの移行

アプリケーションの移行について

移行する理由

移行に関する制限

移行のサポート

移行手順

環境の変更

その他のヒント

アプリケーションに合わせた JRockit JVM のチューニング

アプリケーションのテスト

テストする理由

テスト方法

Sun JDK と一緒に提供したツールのレプリカ

JRockit JVM と Sun の間のコマンドライン オプションの互換性

移行に関するヒントの提出

Oracle JRockit JDK の設定と実行

Oracle JRockit JDK のインストール

Linux 環境の設定とチェック

IA32 上の Linux

LD_ASSUME_KERNEL の使用

chroot(3) 環境での実行

Windows 環境の設定とチェック

Sun Solaris 環境の設定とチェック

ライセンス ファイルへのパスの設定

パート 2 プロファイリングおよびパフォーマンス チューニング

プロファイリングおよびパフォーマンス チューニングについて

チューニングの方法 : 概要

この節の内容

チューニングにおけるトレードオフの概要

休止時間とスループットの比較

コンカレントと「Stop-the-World」の比較

圧縮による休止時間とスループットの比較

パフォーマンスとメモリの占有領域の比較

ヒープ サイズとスループットの比較

ブックキーピングと休止時間の比較

Oracle JRockit JVM のチューニングの初歩

ステップ 1: チューニングの基本

ヒープ サイズをチューニングする

ガベージ コレクションをチューニングする

ナーサリ サイズをチューニングする

目標休止時間をチューニングする

ステップ 2: パフォーマンスのチューニング

遅延ロック解除

呼び出しのプロファイリング

大規模ページ

ステップ 3: 高度なチューニング

圧縮をチューニングする

圧縮率

圧縮設定の制限

TLA サイズをチューニングする

その他の情報

ベスト プラクティス

Oracle WebLogic Server

Oracle WebLogic SIP Server

Oracle WebLogic Event Server

Oracle Workshop

「ユーティリティ」アプリケーション

「バッチ」実行

メモリ管理システムのチューニング

ヒープおよびナーサリ サイズの設定

ヒープ サイズを設定する

64 ビット システムでヒープ サイズを設定する

ナーサリおよび保持領域のサイズを設定する

保持領域

ガベージ コレクタの選択とチューニング

動的なガベージ コレクション モードを選択する

スループット モード

休止時間モード

休止時間モードの目標休止時間を設定する

確定的モード

WLRT を使用する場合の特記事項

確定的モードの目標休止時間を設定する

静的なガベージ コレクション方式を選択する

ガベージ コレクタ方式の選択のワークフロー

実行時にガベージ コレクション方式を変更する

コンカレント ガベージ コレクション トリガをチューニングする

メモリの圧縮のチューニング

断片化とガベージ コレクションの休止

圧縮を調整する

圧縮率を設定する

圧縮設定の制限を設定する

圧縮を無効にする

完全な圧縮を使用する

メモリ割り当てのパフォーマンスの最適化

スレッド ローカル領域のサイズを設定する

ロックのチューニング

ロック プロファイリング

ファット ロックに対するスピンの無効化

ファット ロックに対する適応性のあるスピン

ロックの引き下げ

遅延ロック解除

レイテンシを低下させるチューニング

レイテンシの測定

ガベージ コレクションのチューニング

確定的な休止時間を優先して最適化された動的なガベージ コレクション モード

短い休止時間を優先して最適化された動的なガベージ コレクション モード

静的な世代別コンカレント ガベージ コレクション

ヒープ サイズのチューニング

ナーサリ サイズの手動でのチューニング

圧縮の手動でのチューニング

ガベージ コレクションをトリガするタイミングのチューニング

アプリケーションのスループットを向上させるチューニング

アプリケーションのスループットの測定

ガベージ コレクタの選択

スループットを優先して最適化された動的なガベージ コレクション モード

静的なシングルスペース パラレル ガベージ コレクション

静的な世代別パラレル ガベージ コレクション

ヒープ サイズのチューニング

ナーサリ サイズの手動でのチューニング

圧縮の手動でのチューニング

スレッドローカル領域サイズのチューニング

パフォーマンスを安定させるチューニング

パフォーマンスの変動の測定

ヒープ サイズのチューニング

ナーサリ サイズの手動でのチューニング

ガベージ コレクタのチューニング

圧縮のチューニング

メモリの占有領域を小さくするチューニング

メモリの占有領域の測定

ヒープ サイズの設定

ガベージ コレクタの選択

圧縮のチューニング

オブジェクト割り当てのチューニング

JVM の起動を高速化するチューニング

起動時間の測定

ヒープ サイズの設定

アプリケーションおよび JVM のトラブルシューティング

パート 3 JRockit JDK ツール

診断ツールの概要

この節の内容

Oracle JRockit Mission Control ツールの使用

JRockit Mission Control のオーバーヘッド

JRockit Mission Control Client のアーキテクチャの概要

JRockit Mission Control 3.0

JRockit Mission Control 2.0

JRockit Mission Control 1.0

JRockit ブラウザ (JRockit Mission Control 2.0 以降)

JRockit Management Console

JRockit Runtime Analyzer

Latency Analysis Tool (JRockit Mission Control 3.0)

JRA 記録のサンプル

サンプルの記録を開く

サンプルの記録を JRockit Mission Control Client 内から開くには

サンプルの記録をファイル システムから開くには

JRockit Memory Leak Detector

JRockit Mission Control のバージョンに関する詳細

冗長出力の概要

メモリ管理のための冗長ログ モジュール

冗長 memory モジュール

memory 冗長出力の冒頭部分

メモリのガベージ コレクションに関する冗長出力

memory 冗長出力でのページ フォールトの警告

冗長 nursery ログ モジュール

ナーサリの若いコレクションに関する冗長出力

ナーサリのサイズ調整に関する冗長出力

冗長 memdbg ログ モジュール

memdbg 冗長出力の冒頭部分

memdbg のパラレルな古いコレクションに関する冗長出力

memdbg のコンカレントな古いコレクションに関する冗長出力

memdbg の若いコレクションに関する冗長出力

中止された圧縮

コンカレントな古いコレクションでのパラレル スイープ

冗長 compaction ログ モジュール

中止された圧縮に関する冗長出力

冗長 gcpause ログ モジュール

gcpause のパラレルな古いコレクションに関する冗長出力

gcpause のコンカレントな古いコレクションに関する冗長出力

gcpause の若いコレクションに関する冗長出力

冗長 gcreport ログ モジュール

冗長 refobj および referents ログ モジュール

info レベルの refobjs 冗長出力

referents 冗長出力と debug レベルでの冗長 refobj

その他の冗長ログ モジュール

冗長 opt ログ モジュール

冗長 exceptions ログ モジュール

スレッド ダンプの使用

スレッド ダンプの作成

スレッド ダンプの内容

スレッド ダンプの先頭

メイン アプリケーション スレッドのスタック トレース

ロックとロック チェーン

ロックの表示順序の相違

JVM 内部スレッド

他の Java アプリケーションのスレッド

ロック チェーン

スレッド ダンプ内のスレッドのステータス

活動状態

実行状態

特別状態

スレッド ダンプによるトラブルシューティング

デッドロックの検出

処理のボトルネックの検出

アプリケーションの実行時プロファイルの表示

診断コマンドの実行

診断コマンドの概要

jrcmd の使用

jrcmd が JRockit JVM とやり取りする仕組み

jrcmd の使用方法

jrcmd の例

JRockit JVM プロセスをリストする

プロセスにコマンドを送信する

複数のコマンドを送信する

jrcmd の確認済みの制限

Ctrl-Break ハンドラ

利用可能な診断コマンド

ヘルプの出力

Oracle JRockit Time Zone Updater

TZUpdater のダウンロード

TZUpdater の概要

TZUpdater を実行するためのシステム要件

TZUpdater の使用

コマンドライン オプションの説明

TZUpdater のデフォルトの使用方法の例

エラー処理

システム全体での使用

TZUpdater のバージョン確認

TZUpdater の変更の削除

確認済みの問題

Oracle JRockit Mission Control の使用事例

JRockit Management Console によるシステム動作の分析

はじめに

メモリ使用状況の分析

ガベージ コレクションの実行時間をプロットする

警告トリガを設定する

Console を使用してオンラインでメソッドのプロファイリングを行う

JRockit Runtime Analyzer によるシステム上の問題の分析

はじめに

記録の作成

記録の確認

[メソッド] タブの確認

トップ ホット メソッドを確認する

ガベージ コレクション イベントを確認する

[GC 全般] タブを確認する

オブジェクト統計を比較する

ロック プロファイリング情報を確認する

メモリ リークの検出

はじめに

Java アプリケーションの分析

リーク検出

パート 4 診断およびトラブルシューティング

診断およびトラブルシューティングについて

この節の内容

診断のロードマップ

手順 1. よくある原因の除外

手順 2. 現象の観察

手順 3. 問題の特定

手順 4. 問題の解決

手順 5. トラブル レポートの送付 (省略可能)

Oracle JRockit JVM の起動が遅い

起動が遅い場合に考えられる原因

JVM を JRockit JVM に最近切り替えた場合の特記事項

JVM の起動が遅い場合の診断

アプリケーションの起動が遅い場合の診断

nanoTime() および currentTimeMillis() によるタイミング

System.nanoTime()

System.currentTimeMillis()

アプリケーション起動時のミリ秒とナノ時間

起動が遅い場合の推奨解決策

起動を高速化するチューニング

最適化の問題の除外

アプリケーションの問題の除外

Oracle サポートへの連絡

長いレイテンシ

通常はチューニングの問題

トラブルシューティングのヒント

GC のトリガ値が増え続ける

古いコレクションに対する GC の理由が割り当ての失敗である

若いコレクションの休止時間が長い

確定的モードの休止時間が長い

問題が解決できない場合の Oracle サポートへの連絡

全体のスループットが低い

通常はチューニングの問題

問題が解決できない場合の Oracle サポートへの連絡

Oracle JRockit JVM のパフォーマンスが時間の経過と共に低下する

通常はチューニングの問題

最適化の問題

Java でのメモリ リーク

問題が解決できない場合の Oracle サポートへの連絡

システムのクラッシュ

Oracle サポートへの通知

クラッシュの分類

クラッシュ ファイルの使用

クラッシュの種類の特定

仮想メモリ不足のクラッシュ

仮想メモリ不足エラーの確認

仮想メモリの最大値

テキスト dump ファイルのチェック

バイナリ mdmp または core ファイルのチェック

仮想メモリ不足エラーのトラブルシューティング

JRockit JVM の最新のバージョンへのアップグレード

Java ヒープ サイズの削減

Windows/3GB 起動オプションの使用

JNI コードのメモリ リークのチェック

仮想メモリの使用状況の記録

Windows

Linux

問題が解決できない場合の Oracle サポートへの連絡

スタック オーバーフローのクラッシュ

スタック オーバーフローのクラッシュの確認

スタック オーバーフローのクラッシュのトラブルシューティング

アプリケーション レベルでの変更

デフォルト スタック サイズの拡大

スタック オーバーフロー エラーに対する JRockit JVM の抵抗力を強くする

サポートされない Linux コンフィグレーションのクラッシュ

OS のバージョンがサポート対象かどうかの確認

正しいバイナリがインストールされていることの確認

スレッド ライブラリの確認

JVM クラッシュ

コード生成のクラッシュ

コード生成のクラッシュの特定

コード生成のクラッシュのトラブルシューティング

問題のあるメソッドを除外する

opt ファイルを作成、使用する

opt ファイルの設定を確認する

Ctrl-Break ハンドラを使用して opt ファイルを設定する

ディレクティブの規則

外部のインスツルメンテーション ツールが原因かどうかの検討

サポートへの問い合わせ

ガベージ コレクションのクラッシュ

ガベージ コレクションのクラッシュの特定

最新バージョンの JRockit JVM へのアップグレードの検討

回避策の試行

ガベージ コレクタを変更する

圧縮を無効にする

インライン化を無効にする

最適化コンパイラを使用する

問題が解決できない場合の Oracle サポートへの連絡

クラッシュ ファイルの概要

テキスト dump ファイルとバイナリ core/mdmp ファイルの相違点

バイナリ クラッシュ ファイルのサイズ変更

クラッシュ ファイルの場所

Linux および Sun Solaris 上でのバイナリ core クラッシュ ファイルの有効化

Windows 上でのバイナリ mdmp クラッシュ ファイルの有効化

クラッシュ ファイルの無効化

テキスト dump ファイルの無効化

バイナリ クラッシュ ファイルの無効化

テキスト dump ファイルからの情報の抽出

発見すべき兆候

テキスト dump ファイルの例

テキスト dump ファイルの冒頭

JRockit JVM ダンプ (クラッシュ ファイル) の作成

サポート情報

OS によるエラー メッセージ

JRockit JVM のバージョンおよびガベージ コレクタ情報

CPU およびメモリ情報

オペレーティング システムのバージョン情報

スレッドと状態の情報

コマンドラインおよび環境情報

コマンドライン オプションの情報

JAVA_HOME と _JAVA_OPTIONS

LD_LIBRARY_PATH

LD_ASSUME_KERNEL、C Heap、StackOverFlow、および OutOfMemory の情報

レジスタおよびスタック情報

レジスタ

スタック情報

Oracle JRockit JVM がフリーズする

フリーズの場所の診断

Java アプリケーションのフリーズ

Java アプリケーションのフリーズの解決

問題が解決しない場合

JVM のフリーズ

JVM のフリーズに関する情報の収集

Linux システムで情報を収集する

診断の enableforce_crash コマンドを使って強制的にクラッシュさせる

SIGABRT を使用する (最新の Linux システム)

Windows システムで情報を収集する

診断の enableforce_crash コマンドを使って強制的にクラッシュさせる

windbg を使用する

JRockit JVM をサービスとして実行している場合の状態情報を収集する

Oracle JRockit サポートへの情報の送付

応答しない NFS 共有

Oracle サポートへのトラブル レポートの送付

まず Oracle JRockit JVM フォーラムをチェックする

トラブル レポートの送付

トラブル レポート送付の手順の概要

問題の種類の特定

サポート対象のコンフィグレーションで実行していることの確認

新しいバージョンの JRockit JVM で問題が解決されていないかどうかの確認

問題を明確にする十分な情報の収集


  ページの先頭       前  次