リリース ノート

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

R26 リリース情報

このドキュメントでは、BEA JRockit R26 の重要な注意が含まれます。内容は以下のとおりです。

 


BEA JRockit R26.4 の新機能および改善事項

BEA JRockit R26.4 は、サポート対象の全プラットフォームでの J2SE 5.0 の完全サポートに加え、以下の領域でも改善が図られています。

64 ビット プラットフォームでのパフォーマンス向上

低待ち時間アプリケーションのパフォーマンス向上

低待ち時間アプリケーションに関する次の改善事項により、BEA JRockit のパフォーマンスが向上しました。

図 3-3 を参照してください。上記の改善事項でパフォーマンスがどう向上したか示されています。

図 3-3 BEA JRockit R26.3 と R26.4 でのパフォーマンス比較

BEA JRockit R26.3 と R26.4 でのパフォーマンス比較

SPARC でのパフォーマンス向上

SPARC の BEA WebLogic Server 実行パフォーマンスが BEA JRockit R26.3 から約 15% 向上しました。

チューニング オプションの追加

今回のリリースでは次のチューニング オプションが追加されました。

BEA JRockit の各チューニング オプションの使用方法については、BEA JRockit コマンドライン リファレンスを参照してください。

 


BEA JRockit R26.3 の新機能および改善事項

 


BEA JRockit R26.2 の新機能および改善事項

 


BEA JRockit R26.1 の新機能および改善事項

 


BEA JRockit R26.0 の新機能および改善事項

 


最新の変更点

BEA JRockit の変更履歴は次のとおりです。

BEA JRockit R26.4 リリースでの変更点

BEA JRockit R26.4 リリースでは以下の変更要求が実施されました。

変更要求 ID
説明
CR279188
JRockit 1.4.2_10 R26.3 ではシリアライズ対象クラスの SUID の計算に合成ビットが含められるため、生成される SUID が Sun 1.4.2_10 および BEA JRockit 1.4.2_08 R24 のときと異なります。この問題によりシリアライズが失敗します。
クラスに合成属性が含められるのは、クラスがクラス ポインタ ATestClass.class を参照するときか、またはアサーションを使用するときです。
これは、1.4.2_10 R26.3 と Sun 1.4.2_10 の間の RMI 通信が失敗する可能性があることを意味します。同様に、BEA JRockit 1.4.2_10 R26.3 と BEA JRockit 1.4.2_08 R24.5 の間の RMI 通信も失敗する可能性があります。(データベースに格納されている) シリアライズされたクラスのロードに失敗する可能性もあります。

注意 : この問題は R26.4 で修正されました。

CR258122、CR258159、CR264680
次のオプションが新たに追加されました。
CR258934
Solaris でラージ ページ (-XXlargePages) の制御を有効にする引数が新たに追加されました。
CR267987
java.nio.channels.SelectionKey.OP_CONNECT を使用すると BEA JRockit が永久にブロックされます。この問題は修正されています。
CR268133
以前、java.lang.reflect.Method.getParameterAnnotations() は、メソッドにアノテーションがない場合、誤った結果を返しました。この問題は修正されています。
CR268439
以前は、アタッチされていないスレッドから JVMTI の関数を呼び出すと BEA JRockit がクラッシュしました。この問題は修正されています。
CR269375
古いコレクションごとに、ガベージ コレクションの理由が verbose:memdbg で出力されます。
CR271551
以前は、ByteBuffer.allocateDirect() で割り当てたバッファが、アプリケーションから破棄しても解放されず、C ヒープ メモリのリークを引き起こしていました。この問題は修正されています。
CR272364
以前は JVMTI 関数 GetThreadInfo にスレッドとして NULL を渡すとエラーが返されました。現在は、仕様どおり NULL が現在のスレッドとして扱われます。
CR274636
以前、BEA JRockit 1.4.2 R26.2 と R26.3 では、java.lang.String.getBytes(String charsetName) に null 引数を渡したとき java.lang.NullPointerException が送出されていました。BEA JRockit 1.4.2 R24 では、これは問題になりませんでした。
この問題は修正されています。
CR275108
以前は、lookfor パラメータを Ctrl-Break ハンドラ print_object_summary に対して使用すると、特定の種類の参照が見つかった場合に BEA JRockit がクラッシュすることがありました。
この問題は修正されています。また、各参照の種類も出力されるようになりました。
CR275725
以前、Linux では BEA JRockit 起動後の経過時間が BEA JRockit のSystem.nanoTime() 実装で与えられていました。現在は、これに代わって gettimeofday を使うようになり、時間に基づく JVM インスタンスの比較が簡単に行えるようになりました。
CR276308
BEA JRockit の冗長フレームワークがより厳密になり、どうにでも解釈できるショートカットが除去されました。たとえば、オプション -Xverbose:compact はもう有効でなく、代わりに -Xverbose:compaction を使う必要があります。
CR276311
-Xgc:gencon を使用すると、まれに BEA JRockit R26.3.0 がクラッシュすることがありました。すべてのプラットフォームが影響を受けました。この問題は修正されています。
CR276460
FileChannel.transferTo を使用しても RHEL4 でエラーになることはなくなりました。
CR276987
R26.4 より前の BEA JRockit R26 リリースでは、メソッドの生成前にガベージ コレクションがオフになった場合、ブレークポイントがガベージ コレクションの対象となることがありました。この問題は修正されています。
CR277702
JraRecordingStarter.jar が BEA JRockit に同梱されなくなりました。代わりに jrcmd で JRA 記録を開始してください。
CR278411
以前、BEA JRockit ではバッファ オーバーフロー時に java.nio.DirectByteBuffer.put() で誤って BufferOverflowException ではなく BufferUnderflowException が送出されていました。この問題は修正されています。
CR279712
以前、Ctrl-Break ハンドラの print_threads でメモリ リークが生じることがありました。これはスレッド ステータスの出力中に解放されないハンドルが原因となっていました。
この問題は Linux および Solaris プラットフォームでのみ確認され、現在は修正されています。
CR280443
以前、BEA JRockit メモリ リーク ツールのタイプ グラフでタイプを展開すると、BEA JRockit がハングして応答しなくなり、その間も CPU リソースが消費されていました。この問題は修正されています。

BEA JRockit R26.3 リリースでの変更点

BEA JRockit R26.3 リリースでは以下の変更要求が実施されました。

変更要求 ID
説明
CR265225
XML ファイルに USER_INSTALL_DIR が設定してあれば、サイレント モードの BEA JRockit JRE インストーラが正しくインストールされるようになりました。
CR264064
Sparc 上の Solaris のデフォルト スタック サイズが 2 倍の 512KB に増やされました。
CR263376
Itanium の RHEL 4.0 QU1 には QU2 で修正されたカーネルの重大なバグが含まれています。したがって、Itanium システムでは BEA JRockit を RHEL 4.0 QU2 (以降) で実行する必要があります。
IA32 と x64 の場合、QU2 へのアップデートを必要とするような既知の問題は存在しないので、QU1 を使い続けることができます。
CR262962
ハイパースレッド検出が多少変更され、ハイパースレッドが利用できるか、またそれがオンかオフかを以前よりもうまく検出できるようになりました。また、それに伴い BEA JRockit のプロパティ jrockit.cpu.ia32.ht のデフォルト値が “hw” (ハードウェア検出) から “os” (OS 検出) に変更されました。
CR262571
以前は、Ctrl-Break ハンドラの print_object_summarysizeof パラメータが期待どおり機能しませんでした。この問題は修正されています。
CR262540
以前は、HP OpenView Java 診断プロファイリング エージェントを実行すると BEA JRockit R26.0.0 がクラッシュすることがありました。この問題は修正されています。
CR262527
例外の送出がない状態で例外ハンドラに入ったときにバイトコードの処理に失敗する問題が解決されました。
CR262448
R24.5.0 の -Xdebug における複数の問題が今回のリリースで修正されました。
CR260490
新バージョンの rtmon (librtm.so) が Montecito システム互換となり、カーネルに Montecito perfmon-2 パッチを当てなくてもよくなりました。つまり、RTMonRegisterThread() または RTMonStart() を呼び出してもエラーにならず、以前のようにコア ダンプが生成されることはもうありません。
CR260241
x86 でデバッグ中に ArrayIndexOfOutBounds-exception が発生すると、BEA JRockit がクラッシュすることがありました。この問題は修正されています。
CR259231
以前、JVMTI 関数 GetObjectsWithTags が壊れていました。この問題は修正されています。
CR258894
BEA JRockit の実行時に gcprio:pausetime または gcprio:deterministic を指定する際、JMAPI または JLMEXT で休止時間長の目標値を設定できるようになりました。詳細については、Javadoc を参照してください。
CR258395
JVM の停止時に JVMTI 関数 Agent_OnUnload が呼び出されませんでした。この問題は修正されています。
CR258248
環境変数 JROCKIT_DUMP_PATH でパスを指定してクラッシュ ダンプ情報を現在の作業ディレクトリ以外の場所に保存できるようになりました。既存の書き込み可能な場所を指定しなければなりません。
CR258200
R26.3 より前の BEA JRockit R26 リリースでは Windows プラットフォームのスレッド優先順位の問題のために BEA JRockit が実行中にライブロックすることがありました。
この問題は修正されています。
CR257905
(Linux のみ) シグナルをブロックするプロセス (Sun の HotSpot JVM など) から BEA JRockit を起動したとき、BEA JRockit に対して SIGQUIT を送信したり、jrcmd ツールを使用したりすることができませんでした。この問題は BEA JRockit のリスン対象シグナルをブロック解除することで修正されました。
CR257799
複数の JVMTI エージェントが can_tag_objects 機能を取得できるようになりました。
CR257687
R26.3 より前の BEA JRockit R26 リリースでは、Class.getMethod() 実装のバグにより BEA JRockit がクラッシュすることがありました。スレッドの停止位置が正しくないとき、ガベージ コレクタの “this” 参照処理が適切に行われていませんでした。
この問題は修正されています。
CR257039
-Xgcprio を使用するとき、新しいオプション -XXdisableGCHeuristics により動的ガベージ コレクタ選択ヒューリスティックが無効化されます。実行時にガベージ コレクタを変更する JMAPI もまだ使用できます。

注意 : 動的ガベージ コレクタ選択ヒューリスティックを無効にすると、動的ガベージ コレクタの動作に影響を与え、スループットの低下やガベージ コレクション休止時間の長期化を招くことがあります。

CR256867
Linux で初期 (メイン) スレッドの初期化の際に -Xss:<size> オプションを考慮し、これと現在のシステム スタック rlimit (man rlimit を参照) のどちらか最大の領域をコミットするようになりました。
CR255959
Sun バグ 5103041 に対する修正が追加されました。
CR255271
CR254297
クライアントの接続直後に Memory Leak Server が突然停止したとき BEA JRockit に競合状態が生じ、ソケットが CLOSE_WAIT 状態で放置されることがありました。Linux では、これが原因で BEA JRockit プロセスのファイル記述子が最終的に足りなくなることがありました。この問題は修正されています。
CR252610
一部のフォント ファイルについての TrueType フォント処理に関する問題は修正されています。
CR251838
以前、一部のフォント ファイルについての TrueType フォント処理に関する問題が原因で、java.awt.Font.getXXX() メソッドが呼び出され、その結果、IllegalArgumentException が送出されることがありました。この問題は修正されています。 (詳細については、CR252610 を参照)。
CR248132
Red Flag Linux の一部である Asianux に対する明示的なフォント サポートが BEA JRockit 1.4.2 に追加されました。Red Flag 4.1 のフォント パッチ CR200703 (LANG=zh_CN.GB2312 ロケール) は引き続きサポートされます。このフォント サポートは Red Hat Linux のフォント サポートをベースにしています。
CR247393
Linux および Solaris man ページが削除されました。
CR247026
BEA JRockit R26 の初期のバージョンでは、Windows オペレーティング システムのマルチメディア タイマ関連の問題のために、時計を遅らせる方向でシステム時刻が調節されることがありました。
これはシステム時刻を約 1 分だけ戻すというものでした。この問題が生じた場合、-Djrockit.periodictask.usemmtimers=false でマルチメディア タイマの使用を止めることもできました。
この問題は修正されています。
CR189181
Red Flag Linux の一部である Asianux に対する明示的なフォント サポートが BEA JRockit 5.0 に追加されました。このフォント サポートは Red Hat Linux のフォント サポートをベースにしています。
CR179421
BEA JRockit で一部の競合モニタが JVMPI に報告されないという問題が解決されました。

BEA JRockit R26.2 リリースでの変更点

BEA JRockit R26.2 リリースでは以下の変更要求が実施されました。

変更要求 ID
説明
CR256719
多数のスレッドからリフレクションによって同じメソッドを同時に起動すると JVM の速度が低下します。
CR239984
BEA JRockit JDK 1.4.2 の初期のリリースでは、コマンドラインから管理サーバを起動するとき -Xmanagement:class=com.JRockit.management.rmp.RmpSocketListener を指定する必要がありました。しかし、現在は -Xmanagement を指定するか、jrockit.managementserver.port で管理サーバ ポートを設定するだけで起動できます。
CR249272
プロパティ jrockit.managementserver.usejmx が BEA JRockit JDK 1.5 に追加されました。このプロパティを false に設定すると、BEA JRockit JDK 1.5 でデフォルトの管理プロトコル (JMX) の代わりに RMP プロトコルが使われるようになります。
CR250218
以前は、ヒープの参照を出力しようとすると、致命的でない JVMPI エラー メッセージが表示されました。この問題は修正されています。
CR250712
スレッドの終了タイミングが適切でないと、競合が原因で JRA 記録中に BEA JRockit がクラッシュすることがありました。この問題は修正されています。
CR252315
圧縮率とポインタセット制限を調節するとき、圧縮ヒューリスティックで例外的な圧縮が無視されるようになりました。
CR252348
オプション -Xverbose:cpuinfo が IA64 で使用できるようになりました。
CR252567
X64 プラットフォームのデフォルト スタック サイズが前のリリースの 2 倍になりました。
CR253588
ナーサリ サイズの自動設定中に最大ナーサリ サイズを計算するとき空き領域の大きさが正確に計算されるようになりました。
CR253952
JVMPI の複数の問題が修正されました。
CR254354
一部のガベージ コレクタで最小ブロック サイズ (-XXminBlockSize で設定) が誤ってスレッドローカル領域のサイズとしても使われていました。今回の修正の結果、-XXminBlockSize 値を増やしてもスレッドローカル領域のサイズは影響を受けなくなります。
-XXminBlockSize でスレッドローカル領域のサイズを調節していた場合は、-XXlargeObjectLimit および -XXtlaSize-XXminBlockSize と同じ値に設定する必要があります。BEA JRockit コマンドライン リファレンスを参照してください。
CR257184, CR257379
オプション -Xpausetarget -Xgcprio:deterministic を実行するときに、常に動作しませんでした。この問題は修正されています。
CR257540
すべてのダイレクト java.nio.Buffers で正常に使えるように JNI 関数 GetDirectBufferAddress が変更されました。以前は、ダイレクト java.nio.ByteBuffers でしか使えませんでした。
CR257840
JRockit のクラッシュの原因を簡単に突き止められるように、-XXdumpfullstate がデフォルトのオプションになりました。これは、BEA JRockit がクラッシュした場合、以前よりも多くの情報がディスクに保存されることを意味します。以前の動作に戻すときは、-XXdumpsize:normal を使用します。
CR258002
zip ファイル エントリからの追加データのロードが正常に行われるようになりました。
N/A
以前の 1.4.2 BEA JRockit バージョン、すなわち BEA JRockit 1.4.2_08 R24.5.0 には、Java Web Start と Browser Java Plugin が同梱されていました。BEA JRockit R26 on 1.4.2 では、これらの機能が削除されました。

BEA JRockit R26.0 リリースでの変更点

BEA JRockit R26.0 リリースでは以下の変更要求が実施されました。

変更要求 ID
説明
CR211951
BEA JRockit の以前のバージョンでは、マルチ CPU Windows マシン上で [JVM Process Load] の上限が 100/CPU 数に制限されていました。この問題は修正されています。
CR213687、CR213685
非サポートのオプション -XXprintStackOverflow が追加されました。このオプションは、StackOverFlowError が送出されたときに完全なスタックダンプを生成します。
CR218035、CR230226
以前のリリースでは、Itanium 上で Linux 2.6.11 kernel (およびそれ以前) を使用すると、それらの kernel にはバグがあるため、JRockit がハングまたはクラッシュするという問題が確認されていました。このバグは、Linux ベンダにより、kernel 2.6.12 で修正されています。

注意 : BEA JRockit のこのリリースを実行するためには、SLES 9 SP2 または RHEL4 U1 (以降) を使用する必要があります。

CR219610
デフォルトのフリーリスト キャッシュ サイズは、現在のヒープ サイズの 10% (最小サイズは 3MB) です。
CR225145
java.vendor* システム プロパティに変更が加えられました。正しい値は以下のとおりです。
  • java.vendor = “BEA Systems, Inc.”
  • java.vendor.url = “http://www.bea.com/”
  • java.vendor.url.bug = “http://support.bea.com”
CR226460
実験的なコード キャッシュ機能は、安定性の問題により削除されました。
CR228592
メモリ リーク ツールが原因で JRockit がフリーズまたはクラッシュすることがありました。この問題は修正されています。
CR228822
BEA JRockit をシングル CPU マシンで実行したときに、コード オプティマイザによる干渉が大きくなりすぎることがありました (特に JRockit 5.0 R25.2.0)。この問題は WebLogic コンソールを初めて起動したときに認識されることがありました。この問題は修正されています。
BEA JRockit の以前のリリースでは、-Djrockit.codegen.optpriority=1 フラグを設定することでこの問題を回避していました。このフラグを使用している場合は、このリリースにアップデートするときにこのフラグを削除してください。
CR229981
内部ロックの動作が改善され、負荷が大きい場合にも優れたパフォーマンスを実現できるようになりました。
CR230236
-Xmanagement オプションを使用した場合、BEA JRockit Management Console が接続されていないときでもオーバーヘッドが発生した。この問題は修正されています。
CR232847
浮動小数点のパフォーマンスが改善されました。
CR235100
以前のリリースの java.vm.version は以下のとおりでした。
dra-45238-20050523-2021-win-ia32
このリリースの java.vm.version は以下のとおりです。
R26.0.0-188-52875-1.5.0_04-20051110-0917-win-ia32
以前のリリースの java.vm.info は以下のとおりでした。
R25.2.0-28
このリリースの java.vm.info は以下のとおりです。
<empty>
CR235101
以前の BEA JRockit では、MemoryMXBean.getNonHeapMemoryUsage().used は、プロセス仮想バイト数からヒープ サイズを差し引いた値として計算されていました。このリリースでは、MemoryMXBean.getNonHeapMemoryUsage().used は、プロセス rw メモリからヒープ サイズを差し引いた値として計算されます。
CR235105
ヒープ占有トリガ ヒューリスティックが修正されました。
CR235107、CR236922
JRockit とコンカレント ガベージ コレクタを実行している場合、ガベージ コレクタは、ヒープ メモリが不足する前にガベージ コレクションを完了できるようにするために、ヒープが完全にいっぱいになる前に起動されます。
JRockit は、ガベージ コレクションをトリガするタイミングをヒューリスティックに決定しようとしますが、このトリガを手動で固定値に設定した方がよい場合もあります。その場合は、-XXgctrigger=<int> 引数を使用します。ここで、int は、 0 ~ 100 の範囲の整数です。この値は、トリガする引数のために確保する空きヒープの割合を示します。
CR235682
以前は、世代別のコンカレント マーク/コンカレント スイープ方式を選択すると、非世代別のパラレル マーク/パラレル スイープ方式が選択されました。この問題は修正されています。
CR236723
「疑わしい」スレッド システムで実行すると、起動時に警告が表示されます。
CR237093
パラレル ガベージ コレクタを実行したときに、参照更新フェーズの時間が不正確に測定されていました。これにより、(圧縮) ヒューリスティックの基になる統計が不正確になっていました。
静的ガベージ コレクションを実行したときに、圧縮のための目標休止時間の増加が急激すぎました。このリリースでは、ガベージ コレクションごとに最大 50% まで目標休止時間を増加できます。初期値は 100 ミリ秒に設定されています (この値は調整可能です)。
CR238220
CPU の負荷および説明が JRockitConsoleMXBean で CompositeData として返されるようになりました。
CR239499
管理サーバが -Xmanagement 起動オプションではなく (ctrlhandler.act を使用して) Ctrl-Break ハンドラによって起動されると、Memory Leak Detector が正常に動作しませんでした。この問題は修正されており、Memory Leak Detector は、管理サーバの起動方法に関係なく正常に動作します。
CR239968
JRockit の以前のバージョンでは、JRA 記録の最大スタック トレース深度は常に 16 フレームでした。このバージョンでは、-XXjra に "tracedepth" オプションを追加し、"jrarecording" ctrlbreak ハンドラを指定することで、この値を設定できます。
デフォルト値は、以前と同じ 16 フレームです。
CR240355
このリリースでは、ctrlbreak ハンドラを使用して、"memory"、"memdbg"、および "gcpause" サブシステムの冗長レベルを変更できます。
CR240359
"verbosity" ctrlbreak ハンドラの構文が変更されました。これまでの引数 "args" が "set" に変更されました。
詳細については、ctrlbreak ハンドラ "help verbosity" を実行してください。
CR240510
  • ガベージ コレクションに関する詳細な情報を含むように、jrockit.verboserefs からの情報が改善されました。
  • ctrlbreakhandler/jrcmd の冗長レベル情報のサポートが追加されました。
CR241377
Solaris/Sparc でのデフォルトのスタック サイズは 256k です。
CR241546
BEA JRockit JRE のこのリリースには、Java Web Start または Java Plugin は付属していません。以前のリリースにはこれらが付属しているものもありますが、このリリースをインストールしている場合は、前のバージョンのインストーラおよびアンインストーラは正常に動作しません。インストールに関する問題を回避するためには、インストールの前に、次のどちらかの手順を実行する必要があります。
  1. このリリースをインストールする前に、以前の BEA JRockit JRE リリースをすべてアンインストールしておきます。この手順を実行した後は、Java Web Start と Java Plugin を使用できなくなります。
  2. このリリースをインストールする前に、必要なすべての BEA JRockit JRE リリースをインストールしておきます。以前のリリースに Java Web Start と Java Plugin が含まれていれば、これらを使用できるようになります。

注意 : このリリースがインストールされている場合は、以前の BEA JRockit JRE リリースのインストールやアンインストールを行わないでください。そのような操作を行うと、Java Web Start と Java Plugin の状態が破損する可能性があります。

CR241638
次の圧縮チューニング フラグが追加されました。
-XXinternalCompactRatio
内部圧縮中に圧縮するヒープ パーツの数を設定します。デフォルトは、動的または 8 (-Xgcprio:throughput を実行している場合) です。
-XXexternalCompactRatio
外部圧縮 (「退避」) 中に圧縮するヒープ パーツの数を設定します。デフォルトは、動的または 8 (-Xgcprio:throughput を実行している場合) です。
-XXheapParts
ヒープ パーツの数を設定します。デフォルトは 128 です。
さらに、システム プロパティの jrockit.gc.usematrix-XX オプションに変更されました。
-XXusePointerMatrix
ポインタセットの代わりにポインタ マトリックスを使用することを示します。-Xgcprio:deterministic または -Xgcprio:pausetime を実行している場合は、デフォルトでポインタ マトリックスが使用されます。
CR241665
管理 API の getMAC 関数と getMTU 関数は Windows でサポートされます。Unix システムでは、これらの関数は空の文字列またはゼロを返します。
CR242307
潜在的なセキュリティ上の脆弱性を修正するために、このリリースでは zlib を zlib-1.2.1 から zlib-1.2.3 にアップグレードしています。
CR242944
jrockit.oomdiagnostics.filename コマンドは、メモリ診断の出力先を指定します (jrockit.oomdiagnostics で診断が有効になっている場合)。診断が有効になっている一方でファイルが指定されていない場合、その出力は、 -Xverbose 情報の出力先 (通常は stderr) と同じになります。
CR244403、CR238634
find_method におけるインタフェースのトラバース スーパークラスが削除されました。これらのクラスは、たとえば Object.* など、インタフェースまたはそのスーパー インタフェースで宣言されていないメソッドを返しました。インタフェースの最上位クラスは、常に Object です。
CR245707
JVMDI は、BEA JRockit R26.0 リリース (25.0 または 1.4.2 ビルドでも同様に) サポートされていません。ただし、JDWP および JDI はサポートされます。これは、前のリリースと同様にリモート デバッグ ツールを使用できることを意味します。
CR245732
従来、JMAPI スタック トレースを取得するときに、ロックを取得していたオーバーライドされた hashCode メソッドを含むトレースにおいて、デッドロックが発生することがありました。この問題は修正されています。
CR255294
以前は、java.io.FilePermission が許可されていないパスで java.io.File.getCanonicalFile() を呼び出したときに、期待されるとおりに呼び出しが失敗しませんでした。この問題は修正されており、適切な例外が送出されます。

 


確認済みの問題

BEA JRockit R26 では以下の問題が確認されています。

問題
説明
追跡対象外
Linux 固有の問題。
シグナル処理の競合によって BEA JRockit がクラッシュする
BEA JRockit を OS シグナルに依存するネイティブ ライブラリと一緒に使用すると、BEA JRockit とネイティブ ライブラリの間でシグナル処理の競合が発生し、クラッシュすることがあります。
回避策 :
環境変数 LD_PRELOAD を次のように設定します。
export LD_PRELOAD=$JROCKIT_HOME/jre/lib/i386/libjsig.so
この競合は、BEA Engineering で IBM の MQSeries ネイティブ ドライバを使用していて確認されました。ネイティブ コードに依存するほかのライブラリでも発生する可能性があります。
詳細については、以下を参照してください。
CR361457
Linux IA32 のためにビルドした実行中の JRockit JVM に Memory Leak Detector を接続する場合、JVM の処理を一度に約 1020 ファイル ディスクリプターのために使用すると、JVM がクラッシュする可能性があります。このことは、ディスクリプターの制限は、1024 以上に (ulimitコマンドを使用して) 設定されている場合のみ発生します。
回避策 :
現在の時点で、少ないファイルディスクリプターが使用中の場合、JVM を起動時に、Memory Leak Detector を起動することができます。このために、JVM コマンド ラインで -Djrockit.memleak.port=12345 を追加しておきます。
JRockit Mission Control を使用して、JRockit ブラウザで、カスタム JMX サービス URLservice:jmx:mlp://localhost:12345 とカスタム接続を作成します。(必要に応じて、localhost および port 12345 を置き換えます。) この接続を使用して、JRockit Mission Control 内の Memory Leak Detector をこの JVM に一回接続することができます。(JVM を再起動せずに)
多くのファイル記述子を使用すると、Java アプリケーションのリソース リークが発生する可能性があることを示します。常に、開いたファイルとソケットを閉じ必要があります。ファイル 記述子など、非 Java リソースを解放するためにガベージ コレクションおよびオブジェクト ファイナライズに依存する必要はありません。詳細については、「Too Many Open Files」を参照します。以下を参照します。
-
CR311515
Red Flag Linux の一部である Asianux に対する新しい明示的なフォント サポートが用意されています。これは、BEA JRockit R26.3.0 が Asianux 互換の Linux ディストリビューションを正しく識別するために、ファイル /etc/asianux-release の存在と内容に依存しているためです。このファイルが存在しない場合、JRockit JDK または JRE は、/etc/redhat-release の検索に戻り、代わりに、Red Hat 互換のフォント サポートを含む Red Hat Linux 互換ディストリビューションを識別します。
JRockit 1.4.2 では、Asianux に対するフォント サポートは、Red Hat Linux のフォント サポートと、Chinese LANG=zh_CN.GB2312 ロケールに対応した Red Flag Advanced Server 4.1 (以降) 用の追加パッチに基づいています。そのため、Red Flag Advanced Server 4.1 (以降) において JRockit 1.4.2 R26.3.0 以降で Chinese zh_CN ロケールを使用するときに、Red Flag Advanced Server 4.1 (以降) にファイル /etc/asianux-release が含まれていない場合、BEA JRockit は想定された Asianux 固有の font.properties.zh_CN.Asianux ファイルの代わりに、Red Hat 固有の font.properties.zh_CN.Redhat ファイルをロードします。そのため、JVM が誤ったパスのフォントをロードしようとしたときに失敗し、予期せぬ動作をする可能性があります。
Red Flag Advanced Server 4.1 および Red Flag Advanced Server 4.1 (SP1) では、ファイル /etc/asianux-release はデフォルトではインストールされない可能性があります。その場合は、以下のいずれかの回避策を適用できます。
- オプションの RPM パッケージ asianux-release がある場合は、インストールする。この解決策の方が適しています。Red Flag Advanced Server 4.1 (SP1) では、オプション パッケージ asianux-release がインストール済みのオプション パッケージ redflag-release と衝突する可能性がありますが、asianux-release パッケージをインストールする前に redflag-release パッケージをアンインストールしても、redflag-release パッケージと並行して asianux-release パッケージを強制インストールしてもかまいません。
- 手動で <jdk>/jre/lib/font.properties.zh_CN.Redhat の内容を <jdk>/jre/lib/font.properties.zh_CN.Asianux の内容で置き換える。
CR307903
配列をコピーしているときにガベージ コレクションのためにスレッドが中断されると、ガベージ コレクションで長時間の休止が起きる場合があります。休止時間がときどき長くなる場合は、この問題の可能性があります。この問題は BEA JRockit R27.2 で修正されています。
CR307902
Linux 固有の問題。
Linux/IA64 でデフォルトの X11 AWT の代わりに Motif AWT を使用するよう明示的に要求し、glibc-2.3.4 より古いバージョンの GLIBC と一緒に Linux を実行した場合、ファイル <jre>/lib/ia64/motif21/libmawt.soGLIBC >= 2.3.4 へのリンケージを要求するため、この操作は UnsatisfiedLinkError により失敗する可能性があります。
サポート対象の Linux のバージョンについては、「サポート対象のコンフィグレーション」ドキュメントを参照してください。
CR300097
RedFlag 5.0 で wait() に関する確認済みのバグがあり、この OS バージョンを使用する RedFlag ユーザにとって不明な動作が起きる可能性があります。
CR286338
BEA JRockit 26.4 では、シングル スペース ガベージ コレクタによるガベージ コレクションの後で、JRA の記録が常にヒープ使用率を 0 と報告します。-Xverbose:memory および -Xverbose:memdbg を使用すると、ガベージ コレクション後の正確なヒープ使用率が出力されます。
CR284602
同じマシンで他の JVM ベンダによる Java プロセスが実行されている場合、jrcmd ツールがマシン上のすべての BEA JRockit プロセスを発見できない可能性があります。この問題を解決するパッチについては、BEA JRockit サポートまでお問い合わせください。
CR283915
Thread.sleep(...) および Object.wait(...) で開始された長期のスレッド スリープはスリープ時間が 0x3FFFFFFF ミリ秒 (約 12.4 日) より長い場合、途中で終了することがあります。
すべてのプラットフォームが影響を受けます。
CR283787
BEA WebLogic Platform 8.1 SP5 を 8.1 SP6 にアップグレードし、BEA JRockit R26 SP3 で実行すると、パフォーマンスが最大 10% 退行する可能性があります。
回避策 :
この退行を回避するには、コマンドライン オプション -XXtlaSize:<default 2kB> および -XXlargeObjectLimit:<default 2kB> を設定してメモリ負荷の高いアプリケーションのパフォーマンスを改善します。
CR280443
BEA JRockit メモリ リーク ツールのタイプ グラフでタイプを展開すると、BEA JRockit がハングして応答しなくなり、その間も CPU リソースが消費されることがあります。この問題は BEA JRockit R26.2 で生じた退行の 1 つでした。

注意 : この問題は R26.4 で修正されました。

CR279998
リフレクション (たとえば、java.lang.Class.newInstance()) により割り当てられたオブジェクトが Memory Leak Detector ツールの割り当てスタック トレースに表示されません。
CR279584
競合がない状況、すなわち java.util.Random オブジェクトが 1 つのスレッドでしか使われていない状況を想定して java.util.Random.next() の同期コードは最適化されました。この最適化の欠点は、オブジェクトが複数の同時スレッドで濃密に使われていると、逆にパフォーマンスが低下することです。ユーティリティ メソッド java.lang.Math.random() を使用しているとき、これがよく起こります。
これを回避するには、java.lang.Math.random() を呼び出す代わりに、新しい java.util.Random オブジェクトを生成します。
CR278796
Null ポインタ例外が最初の catch ブロックをバイパスして次のブロックでキャッチされます。
return x.y;” (変数 x は Null を指す) の直後の catch ブロックは Null ポインタ例外をキャッチしません。この例外は、その次の catch ブロックでキャッチされます。
public class Test {
int y = 0;
public static int foo() {
try {
Test x = null;
return x.y;
} catch (Exception e) {
System.out.println(“It works!”);
}
return 0;
}
public static void main(String[] args) {
try {
foo();
} catch(Exception ex) {
System.out.println(“Failure!”);
}
}
}
CR276311
-Xgc:gencon を使用すると、まれに BEA JRockit R26.3.0 がクラッシュすることがあります。すべてのプラットフォームが影響を受けます。
回避策 :
別のガベージ コレクタを使用するか、BEA JRockit R26.4.0 にアップグレードします。
CR275524
Linux の一部のバージョンでは、ライブラリ関数 exit()_exit() が必ずしも呼び出し元プロセスを終了しません。これが原因で SLES 8 での停止処理中に BEA JRockit がハングします。
回避策 :
より新しい SLES バージョンを使用します。
CR274636
java.lang.String.getBytes(String charsetName) に Null 引数が渡されると、BEA JRockit 1.4.2 R26.2 と R26.3 は java.lang.NullPointerException を送出しますが、BEA JRockit 1.4.2 R24 は送出しませんでした。この動作は仕様ではありませんが、BEA JRockit 1.4.2 R26.2 または R26.3 で XML メッセージングと共に TIBCO を実行しているとき、この変更により問題が起こる可能性があります。

注意 : この問題は R26.4 で修正されました。

CR272699
JVMTI Java デバッガを使用しているとき、ときどきブレークポイントがヒットしないことがあります。この問題は、すべての R26 バージョンで起こる可能性があります。
回避策 :
BEA JRockit の起動時にオプション -XXnoCodeGC を指定します。

注意 : -XXnoCodeGC はもっぱらトラブルシューティングで使うことを想定しており、本番で使うことは推奨されておらず、サポートもされていません。

CR271551
ByteBuffer.allocateDirect() で割り当てたバッファが、アプリケーションから破棄しても解放されず、C ヒープ メモリのリークを引き起こします。

注意 : この問題は R26.4 で修正されました。

CR269115
メソッドの最適化中に BEA JRockit がクラッシュします。この問題は次のスタック トレースにより確認できます。
at renameVar+36()@...
at irCompactVars+240()@...
at ssaConvertTo+2356()@...
...
このクラッシュは Sparc 上の Solaris プラットフォームでのみ確認されていますが、他のプラットフォームでも問題になる可能性があります。
回避策 :
optfile を使用し、クラッシュの原因となるメソッドを取り除きます。
CR268746
NPTL の代わりに LinuxThreads を実行する以前の Linux ディストリビューションで、停止時に BEA JRockit がハングすることがあります。
CR268439
アタッチされていないスレッドから JVMTI の関数を呼び出すと BEA JRockit がクラッシュします。

注意 : この問題は R26.4 で修正されました。

CR268423
R26.3.0 より前の BEA JRockit リリースにはオーストラリア夏時間調整 (2006 年) 用の修正が含まれていません。 パッチについては、BEA サポートまでお問い合わせください。
CR267987
java.nio.channels.SelectionKey.OP_CONNECT を使用すると BEA JRockit が永久にブロックされます。

注意 : この問題は BEA JRockit R26.4 で修正されました。

CR266871
Linux IA32 上の BEA JRockit R26.0.0 では、オブジェクトを割り当てるためのメモリ設定の段階で問題が発生する場合があります。これは次の出力で示され、その後、BEA JRockit が終了します。
[JRockit] ERROR: Fatal error in JRockit during memory setup phase. Try to reduce the heap size using -Xmx:<size>m, i.e. “-Xmx:16m”. Could not create the Java virtual machine.
回避策 :
-Xmx の値をいろいろ変えて、正しくセットアップされるヒープ サイズを探します。

注意 : これが問題とされるのは R26.0.0 です。リリース R26.1.0 以降では、この問題は修正されています。

CR266870
IA64 RedFlag 4.1 はプログラムがクラッシュすると、壊れたコア ファイルを生成します。これは RF41/IA64 で BEA JRockit の技術者が顧客の問題を解決できないことを意味します。
CR266667
java.net.PlainSocketImpl.initProto() (通常、最初の Socket または ServerSocket を生成するとき呼び出される) におけるハングが原因で起動に時間がかかります。
BEA JRockit 5.0 R26 では、IPv4 よりも IPv6 を優先的に使うようにネットワーク スタックが設定されます。
ネットワーク スタックを初期化する際、ネットワーク コードはソケットを固有のループバック インタフェースに接続してデータ構造をセットアップします。この接続が (ファイアウォールなど) でブロックされると、初期化コードはソケットのタイムアウトを待ち、その後、システムは IPv4 を使うように機能後退します。
回避策 :
-Djava.net.preferIPv4Stack=true (代わりに IPv4 を強制的に使わせる) を設定するか、IPv6 を完全に無効にします。適切な修正は、ローカルホスト間で IPv6 トラフィックを許可するというものです。
詳細については、Sun の次のドキュメントを参照してください。http://java.sun.com/j2se/1.4.2/docs/guide/net/ipv6_guide/#ipv6-networking
CR265793
JRockit 1.4.2 R26 で、java.lang.reflect.Array.set(Object array, int index, Object value) は、value が Null のとき array が基本型かチェックせずに常に NullPointerException を送出します。
この問題に対するパッチは、BEA サポートから入手できます。
CR265227
XML ファイルで USER_INSTALL_DIR にデフォルトのインストール パス以外のパスが設定されていると、サイレント モードの BEA JRockit が正しくインストールされません。
インストール時にレジストリが正しく設定されず、.jar ファイルの関連付けが失敗します。Java.exeJavaw.exe の 2 ファイルがどちらも %SystemRoot%¥System32 にコピーされません。

注意 : この問題は R26.3 で修正されました。

CR264913, CR244553
x64 の Linux オペレーティング システムのバグが原因で、BEA JRockit は pthread_once システム コールから起動されるとクラッシュします。
回避策 :
RHEL 4.0 QU3 または SUSE 9.0 SP3 をインストールします。
CR262540
HP OpenView Java 診断プロファイリング エージェントを実行すると BEA JRockit R26.0.0 がクラッシュすることがあります。

注意 : この問題は R26.3.0 で修正されました。

CR262157
まれに、 Ctrl-Break ハンドラまたは Management Console/MAPI によるスタック ダンプでロックに関する正しい情報が出力されないことがあります。
ある方法 (inlining) で最適化されたメソッドがロックを取得したとき、このロックは当該フレームだけでなく隣接フレームでも取得済みと表示されることがあります。スタック ダンプ自体を実行するとき、これは BEA JRockit によるロックの扱いに影響しません。
CR256312
Windows x64 および Itanium 上では、BEA JRockit JRE コンソール モード インストーラを使用してすでにインストールされている BEA JRockit を削除しようとした場合に、アンインストール処理が中断し、次のメッセージが表示されます。
A fatal error has occurred. This application will terminate.
アンインストール情報は削除されますが、ほとんどのファイルおよびレジストリ設定はマシン上に残されます。
BEA JRockit JRE を完全にアンインストールする方法 :
グラフィカル モードでインストーラを実行し、応答が求められたら [Remove previous and reinstall] をクリックします。JRockit JRE が再びインストールされます。(ファイルおよびレジストリ設定を含めて) JRockit JRE を完全にアンインストールするために、グラフィカル アンインストール手順を使用します。
CR252610
一部のフォント ファイルにおける TrueType フォントの処理に関する問題が原因で、java.awt.Font.getXXX() メソッドが呼び出され、その結果、IllegalArgumentException が送出されることがあります。
この問題は、Sun JDK 5.0 Update 4 で見つかった問題として、バグ #6349101 (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6349101) で Sun にすでに報告されています。この問題は理論的にはすべてのプラットフォームで発生する可能性があります。この問題は、RedFlag Linux Advanced Server 5.0 上に RPM パッケージ ttfonts-zh_TW-5.0-2AX.noarch.rpm がインストールされていて、ユーザが中国語ロケールのフォントを要求したときに発生することが確認されています。
回避策 :
パッケージ ttfonts-zh_TW-5.0-2AX をアンインストールしてください。この操作を行うことで問題を解決できますが、これらのフォントがシステムから削除されるので、中国語のテキストを表示しようとしたときに別の問題が発生する可能性があります。この操作を行う場合は、削除されるフォントが使用されている部分をシステムで使用可能な別のフォントに置き換える必要があります。

注意 : この問題はリリース R26.3.0 で修正されましたが、このリリースには Itanium バージョンが含まれていないので、R26.0.0 Itanium バージョンでは現在も既知の問題となっています。

CR251457
Linux 上で仮想メモリの使用量を制限するために ulimit -v を使用する際に、制限値をあまりに低く設定すると、BEA JRockit がクラッシュする可能性があります。BEA JRockit の x86_64 バージョンでは、起動時にコンパイル済みのコードのアドレスが予約されるので、設定値を大きくする必要があります。BEA では、ulimit -v 設定を使用しないことをお勧めします。
CR251452
BEA JRockit は十分な仮想メモリ (アドレス空間) がないと適切に実行できません。使用可能な仮想メモリを増やしてもメモリ消費は増えません。Linux では、使用可能な仮想メモリ量を通常 ulimit -v <amount> コマンドで変更することができます。
アドレス空間を制限しない設定がデフォルトで、これが推奨されています。このデフォルトを変更すると BEA JRockit のアドレス空間が足りなくなるおそれがあり、その場合、BEA JRockit は直ちに終了します。
BEA JRockit の起動に最低限必要な仮想メモリ量は次のとおりです。
  • IA64 の場合 : 88 MB
  • IA32 の場合 : 61 MB
  • x64 の場合 : 1100 MB

注意 : BEA JRockit の起動時の仮想メモリ量が上記の値の 2 倍より少ない場合、警告が表示されます。これは推奨されておらず、実際の Java アプリケーションを実行したとき問題が生じる可能性があります。

CR249667
一部のアプリケーションでは、-Xgcprio:throughput (デフォルト) および -Xgcprio:pausetime モードで実行したときに、ナーサリ サイズ自動設定ヒューリスティックに問題が発生する可能性があります。その結果、ガベージ コレクションが頻繁にトリガされます。
回避策 :
-Xns:<size> を使用して手動でナーサリ サイズを設定するか、または静的ガベージ コレクタを選択します。
ヒープ サイズ自動設定ヒューリスティックがすべてのアプリケーションに最適というわけではありません。ガベージ コレクションが頻繁に行われることを原因とする問題がアプリケーションにあり、ヒープが最大ヒープ サイズまで拡張されていない場合は、初期ヒープ サイズ (-Xms:<size>) を増やすことで、パフォーマンスを向上させることができます。
CR248565
BEA JRockit を Windows 上の埋め込みサービスとして実行する場合 (たとえば、Jakarta Tomcat サービス ラッパー) は、<path-to-jdk>/jre/bin ディレクトリを PATH 変数に追加する必要があります。
CR248551
Windows x64 に 32 ビット JRE をインストールした場合、java.exe ファイルと javaw.exe ファイルは system32 フォルダではなく syswow64 フォルダにコピーされます。
これは、Windows x64 上で実行される 32 ビット アプリケーションで期待される動作です。
CR247613
Windows ia32 BEA JRockit パッケージに同梱の "jrcmd" ユーティリティは Windows x64 では正常に機能しません。代わりに、"jrcmd" ユーティリティ (BEA JRockit の Windows x64 パッケージに同梱) を使用してください。
CR246634
スレッドの優先順位は Windows プラットフォーム上でのみサポートされます。
CR246224, CR260004
Windows XP x64 で JRA 記録を実行すると、Windows 2003 Server で実行された JRA 記録が正しく表示されません。BEA JRockit の現在の実装では、この 2 つのオペレーティング システムのバージョン情報を区別することができません。

注意 : これは R26.0 と R26.1 で問題になります。

CR245914
RHEL4 などの「gamin」ファイル変更モニタ実装を使用する Linux ディストリビューションでは、Java アプリケーション (たとえば Eclipse) がハングすることがあります。これは、gamin のシグナル処理にバグがあるためです。
回避策 :
libjsig.so ライブラリをロードして、「シグナル チェーン」を使用します。そのためには、BEA JRockit を起動する前に、
> export LD_PRELOAD=$JDK_HOME/jre/lib/i386/libjsig.so
を実行します。
シグナル チェーンの詳細については、http://java.sun.com/j2se/1.5.0/docs/guide/vm/signal-chaining.html を参照してください。
CR244773、CR250025
ガベージ コレクション方式が変更されたときに BEA JRockit のナーサリ プールを無効にできます。Java 2 Platform SE API ドキュメントによると、無効化されたプールは null を返すことがあります。したがって、プログラマは、MemoryPoolMXBean#getUsage() および MemoryPoolMXBean#getPeakUsage() からいつでも null が返される可能性があることを想定する必要があります。
MemoryMonitor デモと VerboseGC デモでは null のチェックが行われていないので、NullPointerExceptions が送出される可能性があります。
CR243996
ナーサリを持つ BEA JRockit で VerboseGC デモ (¥demo¥management¥VerboseGC¥VerboseGC.jar) を実行すると、NullPointerExcecption が送出される場合があります。
Java 2 Platform Standard Edition 5.0 の API 仕様によると、MemoryPoolMxBeangetUsage() メソッドは、メモリ プールが有効でない場合 (たとえばナーサリを使って BEA JRockit を実行したとき) に null を返すことがあります。
この有効性チェックはデモに含まれておらず、NullPointerException の原因となります。
CR242655
Windows では、問題のあるコードを構造化例外処理 (SEH) で捕捉できます。Microsoft C コンパイラでは、次のような特殊な構造が許可されます。
__try {
// 失敗する可能性がある何らかの処理を行う
} __except (filterException()) {
// エラーを処理する
}
これは SEH ハンドラで、__try ブロック内のコードが失敗した場合 (たとえば不正なアドレスへの読み取り/書き込みが行われた場合) に呼び出されます。
ただし、64 ビット Windows (IA64 および x64) では、JRockit は、ベクトル化例外ハンドラ (vectored exception handler) と呼ばれる新しい例外処理機能を使用します。ベクトル化例外ハンドラは、SEH ハンドラが呼び出される前に呼び出されます。JRockit ベクトル化例外ハンドラによってネイティブ コード内にエラーが検出された場合、BEA JRockit はクラッシュ ダンプを生成します。
この影響として、BEA JRockit から呼び出されるネイティブ コードで 64 ビット Windows の SEH を使用することはできません。ベクトル化例外ハンドラを自分でインストールしてチェーンの先頭に追加するか、または IsBadReadPtr() を使用してハンドラへの読み取り/書き込みを行う前にメモリをテストしてください。
CR232872
RHEL3u6 以前と RHEL4u2 以前で fork() による新プロセスの生成が失敗することがあります。その結果、Runtime.exec() がエラーとなる可能性があります。この問題は RHEL3u7 と RHEL4u3 で修正されました。
この問題の Red Hat Issue Tracker ケース番号は 77560 です。Redhat の public bugzilla で、これは入手できません。
CR210743
SLES 8.0、RFAS 4.1、RHEL 3.0 QU4 以前を実行している場合、深刻な IO 問題が発生する可能性があります。
回避策 (RHEL の場合) :
バージョン QU5 以降をインストールします。
CR128962
このリリースには、Windows 向けの IPv6 のサポートが、サポートされない機能として含まれています。


  ページの先頭       前  次