ナビゲーションをスキップ

リリース ノート

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

BEA JRockit 5.0 JDK リリース ノート

バージョン 5.0 (R25.2) JDK

このドキュメントには、BEA JRockit 5.0 (R25.2) JDK に関する重要な詳細情報が含まれています。内容は以下のとおりです。

 


ライセンス契約

BEA JRockit 5.0 (R25.2) JDK は BEA JRockit バイナリ ライセンス契約の条件に従っています。

 


プラットフォーム サポート

 


Java サポート

 


インストール

BEA JRockit JDK はスタンドアロン アプリケーションとして利用することができます。JRockit アプリケーションのインストール手順については、『BEA JRockit JDK インストール ガイド』を参照してください。

 


その他のドキュメント

このリリースの BEA JRockit JDK には以下のドキュメントが用意されています。

BEA JRockit のすべてのドキュメントは次の URL で参照できます。

http://edocs.beasys.co.jp/e-docs/jrockit/docs50/index.html

 


最新の変更点

BEA JRockit の最新の変更点に関する情報を以下に示します。

JRockit 5.0 (R25.2) での変更点

このリリースでは以下の変更要求が実施されました。

変更要求 ID

説明

CR233415

Memory Leak Detector で割り当てスタック トレースを調べると、選択した種類が割り当てられているスタック トレースの他に、その種類が割り当てられていないスタック トレースまで表示されることがありました。この問題は修正されています。

CR224247

Java Plug-in が Internet Explorer でアプレットを実行できないという問題が、このバージョンで解決されました。JRockit 5.0 では、Internet Explorer でアプレットを実行することができます。

CR214904

ネットワーク負荷が高いとき、「java.net.SocketException: Socket closed」という例外が送出されることがありました。この問題は修正されています。

CR224896

無効な JRockit オプションが、別の有効なオプションとして誤って解析されることがありました。この問題は、有効なオプションと無効なオプションの名前が同じ文字で始まっている場合に発生します。たとえば、-Xcheck-XcheckedStacks として解析される可能性がありました。この問題は修正されています。

CR204924

FileChannel.read はファイルの終わりで例外を送出せず、-1 を返すようになりました。

CR224377

ロック競合が頻発しているシステムで Object.wait() を呼び出すと、JRockit では NullPointException が送出されることがありました。この問題は修正されています。

CR225425

Memory Leak Detector で最大の配列をリストする場合、上位 10 項目が (それだけの数があれば) 表示されるようになりました。

CR226240

JRockit Analyzer (JRA) では、gencon ガベージ コレクタが動作している場合、JVM がクラッシュすることがなくなりました。

CR227186

ガベージ コレクタ MXBean メソッド getNurserySize は、ナーサリが利用できない場合に内部 RuntimeException を送出することはなくなりました。

CR206727

JRockit を Web ブラウザ プラグインとしてインストールして、Java Console で〔v〕を押しても、JRockit はクラッシュしなくなりました。

CR215677

Management Console 上に砂時計アイコンが残ることがなくなりました。

CR221097

JRockit は、ガベージ コレクション中、複数のスレッドに対してイベントを発行します。1 つのイベントを介してのみイベントが発行されるようにするための新しいオプション、-Xjvmpi:singlegc=true が追加されました。

CR221238

クラスローダの数が多くて、クラスローダあたりのクラスの数が少ない場合のメモリ使用率が改善されました。

CR221635

Management Console でユーザ定義アクションを使用できるようになりました。

CR221996

JRockit の起動時間が短縮されました。

CR222428

スタック オーバーフロー問題をより安全に処理できるようになりました。

CR222443

最適化ガベージ コレクタで -Xverbose:memory を使用した場合、以前は不正確なナーサリ サイズ情報が表示されました。この情報が表示されなくなりました。

CR222539

最適化コンパイラは、StringReader.read の不正確なコードを生成することがありました。この問題は修正されています。

CR222737

Management Console に詳細ペインを生成するときに競合状態となり Null ポインタ例外につながることがありましたが、この競合状態がなくなりました。

CR222973

アプリケーションが java.lang.ClassLoader のプライベート フィールド ペアレントを変更することがなくなりました。

CR222990

256*1024*1024 要素より大きい配列を作成できるようになりました。

CR223407

MemoryMBean 属性の ObjectPendingFinalizationCount が正しい値を返すようになりました。

CR223426

64 ビット プラットフォームでは、Memory Leak Detector が型の最大の配列を取得しようとすると、JRockit がクラッシュすることがありました。この問題は修正されています。

CR223640

JVMTI で IterateOverReachableObjects を使用している場合、JVMTI_REFERENCE_FIELD の無効な referrer_index が返されました。この問題は修正されています。

CR225144

java.vendor* システム プロパティが BEA 固有のプロパティ値に戻りました。

CR225152

メモリ容量が小さいプラットフォームで散発的に発生するデッドロックがなくなりました。

CR226873

JRockit がシャットダウン中にクラッシュし、クラッシュ ダンプやコア ファイルが生成されないことがありました。これは希に発生する問題でしたが、修正されています。

JRockit 5.0 (R25.1) での変更点

このリリースでは以下の変更要求が実施されました。

変更要求 ID

説明

CR209583

CGLIB は IllegalAccessError を送出しません。

CR211573

64 ビット プラットフォームで、浮動小数点コード生成バグにより、JRockit がクラッシュすることがありました。この問題は修正されています。

CR211938

パッケージ ローカルな final メソッドのオーバーライドが有効になりました。

CR211961

java.vm.info プロパティが利用可能になりました。

CR212193

スタック フレームの繰り返し処理において getStackAccessControlContext が誤ったイテレータ (呼び出しの代わりにフレーム) を使用して、最適化フレームが失われることがありました。

CR212198

空の、または無効な ZIP ファイルが見つかると、IOException の代わりに ZipException が送出されます。

CR212423

System.arraycopy の逆コピー実行時に、短い配列で off-by-one エラーが発生しました。この問題は修正されています。

CR214656

lphellocgGetCallChainOnAddr にダンプしません。

CR215089

IA32 Linux (2.6 kernel) のラージ ページが有効になりました。

CR215143

JNI の解決に関するメソッドの問題が修正されています。

CR215444

WebLogic Enterprise Platform の arraycopy が x86 のヒープの外側を読むことがありました。この問題は修正されています。

CR217645

JRockit で ClassCircularityError を送出することができるようになりました。

CR218157

スレッド ダンプを引き起こす最適化関連の問題 (optimizeIt で発生することもある) が修正されています。

CR219032

ヒープ/オブジェクトの割り当てスケーリングのボトルネックを解決するために、-XXaggressive が修正されて cachelistpercentage が 10% に設定され、jrockit.heap.cachelistpercentage プロパティが追加されています。これにより、空きヒープ メモリのパーセンテージが設定され、その値はオブジェクト割り当ての高速化に使用されるフリーリスト キャッシュに保持されます (たとえば、パーセンテージを 15% に設定するには、-Djrockit.heap.cachelistpercentage=15 と設定します)。

CR220374

adminServer (WLS) (R25.1.0-96) 起動時に JRockit が zipReleaseEntry にダンプします。この問題は、BEA JRockit で使用しているサードパーティ製品で確認されています。

CR220655

gencon のタイムアウトが内部シグナル エラーを表していることが希にありました。この問題は修正されています。

CR220819

BEA Installer で Java Control Panel をインストールできるようになりました。

CR220825

JRockit をいったんアンインストールしてから再インストールする場合、JRockit は任意のブラウザのプラグインとしては設定されませんでした。この問題は修正されています。

CR221005

BEA Installer: JRockit のインストールの問題に関して、複数の事例が解決されています。

CR221009

ユーザが JRockit をデフォルト以外の場所にインストールした場合でも、Registry キーがデフォルトの (存在しない) 場所をポイントしていました。この問題は修正されています。

CR221016

Java Web Start のインストールが失敗することはなくなりました。

CR221029

jre/bin に加えて、bin からも Java Application Cache Viewer を起動できるようになりました。

CR222056

Internet Explorer が代替ブラウザとして表示されるようになりました。

CR194599

VM 内部ロックのプロファイリングのサポートが実装されました。

CR195900

外部システムプロパティの処理が一掃されました。

CR205334

sun.reflect.ReflectionFactory.newConstructorForSerialization が機能しません。

注意 : JRockit ではこの API はサポートされていません。

CR205501

IPF ラージ ページ MAP_PRIVATE がサポートされました。

CR206811

呼び出しコンパイラ newInstanceregisterfinalizer の呼び出しを生成できるようになりました。

CR206862

戦略の選択が不適切なため、-Xgcprio:throughput が指定されていると、しだいにパフォーマンスが低下していきます。ヒューリスティックが更新され、パフォーマンスの低下は観察されません。

CR207085

OptimizeIt を使用してサーバを起動すると、JVMTI と JVMPI の間で startEvents の処理に違いがあるため、JRockit がクラッシュします。この問題は修正されています。

CR207247

プロセッサが HT 最適化をサポートしているが OS が確認できない場合、HT 最適化は楽観的に有効化されます。

楽観的アプローチを有効にするために、jrockit.cpu.ia32.ht プロパティが追加されました。

CR209071

該当するメソッドが複数見つかった場合、最も固有性の高い戻り型を持つクラスが Class#getDeclaredMethod から返されるようになりました。

CR209777

optimizeIt を使用してクライアントのデプロイを試みると、JRockit VM のハングが疑われることがあります。OptimizeIt は getthreadstate を頻繁に使用します。このメソッドの実装では、ネイティブ スレッドを一時停止して情報を取得します。JRockit の状況を取得するためにネイティブ スレッドを一時停止する必要はなくなりました。

CR210093

resin 3.0.10 の ClassFormatError。複数の LocalVar*Table:s を任意の順序で使用できるようになりました。

CR210268

JRA プロファイル参照時の StackOverFlowError が修正されました。

CR211066

バイトコード認証が基準 VM に準拠するための厳密度が緩和されました。

CR211177

gcevents 使用時に JVMTI/rawmonitor でデッドロックが発生することはなくなりました。

CR211205

シャットダウン時、共有メモリの取得に失敗すると JRockit がクラッシュします。この問題は修正されています。

CR211322

ネイティブ メソッドの場合、GetLineNumberTableJVMTI_ERROR_NATIVE_METHOD を返すようになりました。

CR212065

1.5.0_02 へのアップグレード : java.lang.Enum のインスタンスがファイナライズされません。Sun バグ 5098065。

CR212317

add_JVMPI_entryexit_hooks の競合状態が修正されました。

CR212612

UNC パスから JRockit を起動できるようになりました。

CR214838

ObjectMonitor メモリ リークが修正されました。

CR214982

-Xnoopt を使用して JRA を起動した場合でも、サンプリングが行われるようになりました。

CR215448

ヒープが拡張可能でもメモリ不足エラーが発生するという問題が修正されました。

CR216068

JAWT 同様、欠落していた JNI サポートが修正されました。

CR216076

ディレクトリに対して FileNativeIO.open を実行しても、ファイル ハンドル リークが発生しないように修正されました。

CR216086

win_ia32 に対する JRockit の最大ヒープ サイズを、ブート エントリに /3GB パラメータを指定することで、1574304KB 超に拡大できるようになりました。

CR216620

IllegalMonitorStateException 実行後の急激なヒープ使用率の上昇が修正されました。

CR216626

-Xcleartype オプションを使用して JRockit を起動しても効果がありません。このオプションは存在意義を問われていて、今後のリリースでは削除される可能性があります。

CR217056

jvmtiGetTag が機能するようになりました。

CR217060

JVMTI が iterateover オブジェクトの正しいコールバックに対して、JVMTI_HEAP_ROOT_THREAD を返すようになりました。

CR217076

Object に静的イニシャライザを追加できるようになりました。

CR217100

認証 (ファイル + パスワード) を使用するリモート JMX が有効になりました。

CR217466

JRockit 上で動作している Eclipse がダンプします。この問題は修正されています。

CR217647

StackOverflowError の送出時に JRockit がハングすることはなくなりました。

CR218061

jrcmd が JRockit 実行ファイルへのパスを正しく解決できるようになりました。

CR218251

-Xrs オプションがサポートされました。

CR219600

大きな未使用ナーサリがあるのにメモリ不足エラーが発生するという問題が修正されました。

CR199232

アプリケーションが終了したスレッドを大量に抱えている場合、ガベージを収集し続けなければなりませんでした。この問題は解決され、JRockit はいつまでもガベージを収集しなくてすむようになりました。

CR200091

JGCW がファイナライザの問題を公開することはなくなりました。

CR206447

-XXhpc オプションの名前が「high performance computing」の業界略語と混同されるため、-XXhpm に変わりました。

CR208302

StringBuffer.append(char[]) をメソッド プロファイリングに追加しても、npe は発生しなくなりました。

CR208310

新しい VM に再接続しても Management Console はデッドロックしなくなりました。

CR208532

収集時にホスト コンピュータでスワッピングが発生すると、警告を発します。verbose:memory がオンの場合、ガベージ収集中のページ フォールト総数がヒープ内のページ数の 5% を超えると、JRockit は警告を発するようになりました。

CR209826

fix_javahomerealpath および symlinks により、java.home が不正確になります。

このリリースでは、JRockit は symlink から java.home までの長い realpaths を処理して、この問題を修正します。

CR210867

以前、一部の compile_method_events が報告されないことがありました。この問題は解決されています。

CR212649

Windows Server 2003 IA32 では、1500m ヒープしか割り当てることができません。この問題を修正するため、JVM パフォーマンス カウンタはヒープ割り当て後に初期化されるよう改められました。

CR214354

JRA の記録開始時に JRockit が時折クラッシュするという問題が修正されました。

CR214516

sun.boot.class.path の初期化時の振る舞いと値が、JRockit と Sun の間で異なります。初期化時の振る舞いは、Sun と同じになるよう書き換えられました。

CR214537

MAPI から名前でスレッドを取得できるようになりました。

CR215113

Eclipse で update サイトを構築することができません。

CR216646

デッドロックのカウンタが追加されました。

CR217666

Management Console でスレッド スタック ダンプのデッドロック検出データを参照できるようになりました。

CR218492

JVMTI システム プロパティ インタフェースの実装が部分的に仕様に準拠しました。

CR208906

JRA の Lock Profiling ページにネイティブ ロック プロファイリングの表が追加されました。

 


新機能、変更点、および改善事項

各リリースにおける新機能、変更点、および改善事項を以下に示します。

BEA JRockit 5.0 (R25.2)

BEA JRockit 5.0 (R25.1)

BEA JRockit 5.0 (R25.0)

 


確認済みの問題

BEA JRockit 5.0 リリースでは以下の問題が確認されています。

問題

説明

EM64T/AMD64 用の Red Hat 4.0 で 5375MB より大きいヒープを使用していると JRockit がクラッシュする。

ヒープ サイズを 5375MB より小さくすれば、この問題を回避することができます。

この問題は次のサービス パック (CR247853) で修正される予定です。

Itanium 上で Linux 2.6 kernel (2.6.11 およびそれ以前の Itanium kernel) を使用していると、間違ったスレッドにシグナルが送られて JVM が突然ハングまたはクラッシュすることがある。

Itanium 上で Linux 2.6.11 kernel (およびそれ以前) を使用すると、それらの kernel にはバグがあるため、BEA JRockit がハングまたはクラッシュするという問題が確認されています。このバグは kernel の sigprocmask() システム コールに含まれていて、2.6.12 kernel で修正される予定です。

このバグが実際にどれだけの頻度で発生するのかを推定することはできません。1 時間に 1 回程度の場合もあれば、2 日に 1 回程度の場合もあるなど、状況によって異なります。

この問題については、シングル CPU システムより SMP システムの方が大きな影響があると考えられます。

この問題が発生する可能性があるのは、Itanium 上で 2.6.11 (またはそれ以前) の kernel を実行している SUSE LINUX Enterprise Server 9.0 および Red Hat Enterprise Linux 4.0 です (CR230226 および CR218035)。

SUSE については、このバグは SLES 9.0 SP2 リリースで修正されることが決まっています。Red Hat については、RHEL 4.0 Update 2 での対応を目指して調整中です。

パッチは以下のサイトで入手できます。

http://kernel.org/git/?p=linux/kernel/git/
torvalds/linux-2.6.git;a=commit;
h=a2a64769d0d3cc0380b4b6ecdcb781a2f790a69e

SMP システムを使用するのであれば、kernel にパッチを適用して kernel 修正モジュールを含めるか、新しい kernel にアップグレードする必要があります。リリースの時点 (2005 年 6 月 22 日) では、公式にアップデートされた kernel はまだ入手できません。SLES 9.0 Itanium を使用するのであれば、リリースされ次第、SP2 にアップグレードすることをお勧めします。

Red Hat の内部参照番号は 74397、SUSE の内部参照番号は 78084です。

取得したインスタンスを表示しているときに、BEA JRockit の Memory Leak Detector がハングする。

一部のインスタンスでは、BEA JRockit の Memory Leak Detector により、JRockit がフリーズまたはクラッシュすることがあります (CR228592)。

64 ビット/SMP システム上で SUSE LINUX Enterprise Server 9.0 を使用していると、JRockit がデッドロックする。

SUSE LINUX Enterprise Server 9.0 x64 バージョンには、kernel のバグがあり、マルチ CPU システム上で希にシグナルが失われることがあります。これは、ほとんどのアプリケーションでは認識できません。しかし、JRockit はシグナルに大きく依存しているため、このバグの影響を受けます。結果として、JRockit がデッドロックします。このため、SUSE によってこの問題が修正されるまでは、前述のプラットフォームで JRockit を使用するのはお勧めできません。現在、BEA と SUSE はこの問題の解決にむけて共同作業を進めています。

問題の影響を受けるのは、SUSE LINUX Enterprise Server 9.0 SP1 です。この問題は 64 ビット システム上で Red Hat Enterprise Linux 4.0 GA を使用している場合にも発生しますが、次期の RHEL 4.0 QU1 で修正されることが決まっています (CR230225 CR220658)。

希にガベージ コレクタがクラッシュすることがある。

JRockit は無効なメモリ アクセスがあるとクラッシュして、mmNurseryAddTLAsToCache の問題をポイントすることがあります。これはタイミングの影響を受けやすい問題であり、世代別ガベージ コレクタを使用していると発生する可能性があります。この問題が発生するのは希です (CR229720)。

cbGetCodeInfoOnAddr でクラッシュが発生する。

特定の状況において、クラスのアンロード中に JRockit がクラッシュすることがあります (CR229723)。

JRockit がデッドロックする可能性がある。

JRockit がブラウザの Java Plug-in としてインストールされている場合、Java Console で〔v〕(スレッドのダンプ) を押すと、高い確率で JRockit がデッドロックします (CR225442)。

demo¥jpda トレース例が失敗する。

これは jrockit.jar ファイルのクラスの行番号を入手できないのが理由です (CR221291)。

フォントやアイコンが無効または存在しない。

JRockit で AWT/java2d/java3d アプリケーションを実行していると、設定によっては、AWT DirectX の加速を開始できないことがあります。これは仮想メモリ空間の競合が原因です。

回避策 : 明示的な -mx フラグを物理 RAM 容量の約半分またはそれ以下に設定します。

統計フィールドの値がゼロまたは Null にリセットされる。

デバッガで動的コードの置き換えを使用すると、統計フィールド値がゼロまたは Null にリセットされます。また、古いフィールド値の参照が更新されないため、後でクラッシュに似た状態が発生することもあります。

回避策 : 統計フィールドを含むクラス定義を変更しないでください。

シグナル処理の競合によって JRockit がクラッシュする。

Linux 固有の問題。

JRockit を OS シグナルに依存するネイティブ ライブラリと一緒に使用すると、JRockit とネイティブ ライブラリの間でシグナル処理の競合が発生し、JRockit がクラッシュすることがあります。

回避策 : 環境変数 LD_PRELOAD を次のように設定します。

export LD_PRELOAD=$JROCKIT_HOME/jre/lib/i386/libjsig.so

この競合は、BEA Engineering で IBM の MQSeries ネイティブ ドライバを使用していて確認されました。ネイティブ コードに依存するほかのライブラリでも発生する可能性があります。

詳細については、http://java.sun.com/j2se/1.5.0/docs/guide/vm/signal-chaining.html を参照してください。

 

ページの先頭 前 次