ヘッダーをスキップ
Oracle® JRockit JDKリリース・ノート
リリースR28
B61445-04
  目次へ移動
目次

前
 
次
 

3 Oracle JRockit JDK R28で解決された問題

この章では、Oracle JRockit JDK R28で解決済の問題を示します。

この章の内容は次のとおりです。

3.1 R28.3.6で解決された問題

Oracle JRockit JDK R28.3.6で修正された問題を次に示します。

3.1.1 javacを使用してコンパイルしたJavaプログラムのデバッグ中にJRockit JVMがクラッシュする

javacを使用してコンパイルしたJavaアプリケーションを("-g"オプションを使用して)デバッグ・モードで実行すると、JVMがクラッシュすることがあります。これは、JVMの起動時に-Xdebugまたは-XX:+JavaDebugオプションを指定した場合に発生します。Oracle javacによって生成された一部のクラス・ファイル内の不正なデバッグ情報がこの問題の原因です。

この問題はOracle JRockit JDK R28.3.6で修正されました。アップグレード後、修正版のjavacを使用してクラスを再コンパイルしてください。

3.1.2 エージェントの使用中にJVMがクラッシュする

以前のバージョンのJRockitは、JVM Tool Interface (JVM TI)またはjava.lang.instrumentインタフェース(-javaagent起動パラメータ)を使用して実行時にクラスを再定義した後、クラッシュしたり、その他の安定性の問題が発生したりすることがあります。

この問題は解決されました。

3.2 R28.3.5で解決された問題

Oracle JRockit JDK R28.3.5で修正された問題を次に示します。

3.2.1 メソッドのプロファイリングに関連する問題

以前のバージョンのJRockit R28は、総称型を使用するJavaメソッドを正しくインストゥルメントできませんでした。このため、JMXMAPIプロファイリングAPIまたはJRockit Mission Controlコンソールのプロファイラでそのようなメソッドをプロファイリングできませんでした。

この問題は解決されました。

3.2.2 最適化の問題により不正メモリー・アクセス・エラーが発生してJVMがクラッシュする

StringBuffer/StringBuilderをループで使用する際に不正なコード最適化によりJRockitがクラッシュするという問題が修正されました。この問題は、圧縮参照を使用して実行する場合にのみ発生していました。

3.3 R28.3.4で解決された問題

Oracle JRockit JDK R28.3.4で修正された問題を次に示します。

3.3.1 コマンドライン・ツールのメモリー・フットプリントの削減

各種コマンドライン・ツール(jpsjrcmdjstatなど)の呼出し中にJRockit JVMに渡されるデフォルト・オプションが変更され、必要なネイティブ・メモリーの量が減少しました。

3.3.2 jrockit.vm.ArrayCopy.copyメソッドの呼出し中にJRockitがクラッシュする

非常に大きな配列をコピーする際、一部のコピーについて要素数単位の配列サイズ(オフセット)がバイト数単位の配列サイズに変換されることがあり、その結果として32ビット整数のサイズがオーバーフローし、コピーが正しく終了しなかったり、まれにJVMがクラッシュするなどの状況を引き起こしていました。

この問題は解決されました。

3.4 R28.3.2で解決された問題

Oracle JRockit JDK R28.3.2で修正された問題を次に示します。

3.4.1 起動時のフライト記録に関連する問題

以前のバージョンのJRockit R28では、デフォルト記録またはディスクへのバッファリング(あるいはその両方)を、-XX:FlightRecorderOptionsコマンドライン・オプションを使用して有効にした場合に、-XX:StartFlightRecordingオプションを使用して新規記録を開始すると、JRockitが起動時に無期限にハングすることがありました。コマンドライン・オプションおよびパラメータの詳細は、Oracle JRockitコマンドライン・リファレンスを参照してください。

この問題は解決されました。

3.4.2 SPARCプラットフォームでのスタック・チェック・オプション

以前のバージョンのJRockitでは、SPARCプラットフォームで-XX:+|-CheckStacksオプションの値が無視されていました。

この問題は解決されました。JRockit R28.3.2では、-XX:+|-CheckStacksオプションは正しく実装されています。

3.4.3 コードの最適化後に予期しないNullPointerExceptionがメソッドからスローされる

特定の状況で、暗黙的または明示的なボックス化操作がメソッドによって呼び出されると、そのメソッドからNullPointerExceptionがスローされていました。コードの最適化に問題があり、それがこの例外の原因になっていました。

この問題は解決されました。

3.5 R28.3.1で解決された問題

Oracle JRockit JDK R28.3.1で修正された問題を次に示します。

3.5.1 zipアーカイブを開く際にFileNotFoundExceptionがスローされる

JRockitでマルチバイト文字が認識されないため、UTF8エンコードのファイル名を持つzipアーカイブを開く際にFileNotFoundExceptionがスローされていました。

この問題は解決されました。

3.6 R28.2.9で解決された問題

Oracle JRockit JDK R28.2.9で修正された問題を次に示します。

3.6.1 メモリー不足エラーのヒープ・ダンプが生成されない

JVMフラグ-XX:+HeapDumpOnOutOfMemoryErrorを使用している場合、OutOfMemoryErrorのhprofダンプを作成する際にJVMでデッドロックが発生することがありました。

この問題は解決されました。

3.6.2 メモリー不足エラー・メッセージに関連する問題

以前のバージョンのJRockit R28では、失敗した割当てのサイズとしてネイティブOutOfMemoryErrorメッセージに示される値が正しくないことがあります。

この問題は解決されました。

3.7 R28.2.8で解決された問題

Oracle JRockit JDK R28.2.8で修正された問題を次に示します。

3.7.1 Package.getPackagesの呼出しによるNullPointerException

JRockitリリースR28.2.6およびR28.2.7では、Package.getPackagesを呼び出すと、まれにPackage.defineSystemPackageでNullPointerExceptionが発生するという既知の問題があります。この問題は解決されました。

3.7.2 Class.isAssignableからのNullPointerException

VMの起動時にクラスのロードとクラスのシリアライズとの間で競合が発生し、java.langパッケージのClass.isAssignableからNullPointerExceptionがスローされることがありました。この問題は解決されました。

3.7.3 cgGetColorForVarInBlockでのコードの最適化中にJRockitがクラッシュする

特定の状況で、cgGetColorForVarInBlockメソッドでのコードの最適化中にJRockitがクラッシュすることがあります。この問題は解決されました。

3.8 R28.2.6で解決された問題

Oracle JRockit JDK R28.2.6で修正された問題を次に示します。

3.8.1 JRockitフライト・レコーダのリポジトリが無限に増大する

カスタム.jfsファイルで特定の設定を使用する際、maxsize設定で制限されている場合でも、状況によってはOracle JRockitフライト・レコーダのリポジトリが無限に増大することがありました。これは修正済です。

3.8.2 動的に作成されたクラスを持つアプリケーションからの予期しないエラー

(JAXBを使用するなどの方法で)クラスを動的に作成するアプリケーションが、内部参照のカウントの問題により、ネイティブ・メモリー不足、クラッシュまたはその他の予期しない動作を示すことがありました。この問題は最終的にメモリーの破損や、使用されていないクラス名文字列が参照元クラスのアンロード後も蓄積される原因となります。これは修正済です。

3.8.3 JMXMAPIプロファイリングAPIで1つのクラスのすべてのバージョンをプロファイリング可能

以前のバージョンのJMXMAPIプロファイリングAPIでは、同じ名前を持つクラスの単一インスタンスしかプロファイリングできませんでした。複数のクラス・ローダーが同じクラスをロードした場合、そのクラスの一方のバージョンのみがインストゥルメントされました。現在では、1つのクラスのすべてのバージョン(同じ完全修飾クラス名を持つ)がインストゥルメントされます。この変更は、JRockit Mission Controlコンソールのプロファイリング機能にも影響を与えます(JFRプロファイリングへの影響はありません)。

3.9 R28.2.5で解決された問題

Oracle JRockit JDK R28.2.5で修正された問題を次に示します。

3.9.1 インターンされた文字列が割り当てられるとJRockitがクラッシュする

複数のスレッドから共有リソースを操作中にJRockitがクラッシュすることがまれにありました。主に、Java文字列を複数のスレッドから同時にインターンする場合です。この問題は修正されました。

3.9.2 optfileを使用した実行中にJRockitがクラッシュする

optfileでコンパイラ・ディレクティブを使用する場合、JRockit JVMがクラッシュすることがまれにありました。この問題は修正されました。

3.9.3 FileInputStreamからのファイル読取り中にFileNotFoundExceptionがスローされる

JRockitの以前のバージョン(R28.0.0からR28.2.4まで)では、標準入力ストリームがパイプで、それがアプリケーションによってクローズされた場合、続けて他のFileInputStreamを読み取ろうとすると、誤ってFileNotFoundExceptionエラーが発生することがありました。この問題は修正されました。

3.9.4 NIOソケットのクローズ中の問題

特定の状況で、NIOソケットのクローズ中にJRockitがハングしていました。この問題は修正されました。

3.9.5 セキュリティ例外が発生してWindowsでNIO操作が失敗する

WindowsでSecurityManagerを使用する場合、AccessControlExceptionが発生し、特定のNIO操作が失敗していました。この問題は修正されました。

3.9.6 フライト・レコーダが無効な場合に間違った例外がスローされる

以前のバージョンのJRockitでは、フライト・レコーダが無効になっているJRockitインスタンスでの実行中にアプリケーションがフライト・レコーダAPIを使用しようとすると、java.lang.Errorがスローされていました。この動作は、かわりにjava.lang.IllegalStateExceptionがスローされるように変更されました。例外に新しい説明テキストも追加されています。

3.9.7 com.sun.managementメソッドの呼出し中にJRockitがクラッシュする

com.sun.management拡張の実装が不完全なため、long [] com.sun.management.getThreadCpuTime(long[] ids)メソッドで不正なメモリー・アクセスが発生し、JRockitがクラッシュします。

Oracle JRockit R28.2.5では、ThreadMXBean.getThreadCpuTime()の配列版が実装されています。この問題は解決されました。

3.10 R28.2.4で解決された問題

Oracle JRockit JDK R28.2.4で修正された問題を次に示します。

3.10.1 jrcmdコマンドのファイル解析に関連する問題

JRockit R28.2.3で、"stop"文がjrcmdコマンドで無視されるというリグレッションが生じていました。この問題は修正されました。

3.10.2 大きなページ・サイズの使用時にSolarisでの起動に失敗する

以前のバージョンのJRockitでは、1GBを超えるページ・サイズを使用する際に、誤った圧縮参照サイズを選択してSolarisでの起動に失敗することがありました。この問題は修正されました。

3.10.3 print_memusage診断コマンドに関連する問題

print_memusageコマンドのlevel引数の値が無効な場合に、アサーション・エラーが発生してターゲットJVMが終了することがありました。

この問題はR28.2.4で修正されました。エラー・メッセージが表示され、ターゲットJVMには影響を与えません。

3.11 R28.2.3で解決された問題

Oracle JRockit JDK R28.2.3で修正された問題を次に示します。

3.11.1 jrcmdコマンドの出力を指定ファイルにリダイレクト

以前のバージョンのJRockitでは、jrcmdコマンドが、set_filename診断コマンドで指定されたファイルに出力をリダイレクトしていませんでした。JRockit R28.2.3では、set_filenameコマンドで出力ファイルが指定されている場合、jrcmdによって呼び出された診断コマンドの出力は、コントロール・ブレーク・ハンドラ(SIGQUIT)で実行する診断コマンドによって出力がリダイレクトされる場合と同様にファイルにリダイレクトされます。

デフォルトでは、jrcmdによって呼び出された診断コマンドの出力は、jrcmdプロセスのSTDOUT出力ストリームに送られます。set_filenameコマンドのデフォルト動作をリセットするには、filename引数の値を指定せずにコマンドを実行します。詳細は、Oracle JRockitコマンドライン・リファレンスの診断コマンドに関する項を参照してください。

3.11.2 jrcmdスクリプト・ファイルのファイル・サイズの制限に関連する問題

以前のリリースのJRockitでは、jrcmdコマンドに、-fオプションを使用して渡されるファイルのサイズは最大256バイトという制限がありました。JRockit 28.2.3以降では、ファイル・サイズは無制限ですが、ファイルの各行が256バイトに制限されます。

3.11.3 VMSpaceの予約中の問題

JRockit R28.2.0で生じたリグレッションにより、特定のプラットフォームでvmsiReserveメソッドの実行中にJRockitがクラッシュすることがありました。この問題は修正されました。

3.11.4 スタック・オーバーフロー処理の改善

JRockitが特定の状況でスタック・オーバーフロー時にクラッシュし、独自のシグナル・ハンドラを実行する領域が不足しているために、StackOverflowErrorがスローされるのではなくプロセスが中断されることがありました。この問題は修正されました。

3.11.5 メソッドの最適化中の問題

メソッド(java/util/regexパッケージのメソッドであることが多い)を最適化する際に、JRockitがクラッシュすることがまれにありました。この問題は修正されました。

3.11.6 JRockitフライト・レコーダの削除後のJRockitに関連する問題

JRockitの実行中にハード・ドライブからフライト・レコーダのリポジトリが削除されると、プロセスが無期限にハングしていました。この問題は修正されました。

3.12 R28.2.2で解決された問題

Oracle JRockit JDK R28.2.2で修正された問題を次に示します。

3.12.1 暗号スイートを使用するSSL接続の確立中に例外がスローされる

Java SE 6 Update 29でのリグレッションにより、TLS_DH_anon_WITH_AES_128_CBC_SHA暗号スイートの使用中にSSL接続が失敗していました。この問題は修正されました。

3.12.2 コードの最適化に関連する問題

文字列追加の最適化におけるバグにより、特にガベージ・コレクション中にJRockit JVMがクラッシュすることがありました。この問題は修正されました。

3.12.3 ファイナライザの欠落

バージョンR28.0.0からR28.2.1までのJRockitでは、一部のファイナライザがまったく呼び出されないことがあります。JRockitではファイナライザを内部的に使用してクラスの定数プール・データを管理しているため、これが原因でデータが破損し、JVMのクラッシュやその他の予期しない動作を引き起こす場合がありました。この問題は修正されました。

3.13 R28.1.5で解決された問題

Oracle JRockit JDK R28.1.5で修正された問題を次に示します。

3.13.1 Javaヒープの低アドレス空間でメモリーを確保できない

64-bitプラットフォームでは、JRockitでJavaヒープの低アドレス空間(4GB)の領域が不足し、クラスの割当て時にOutofMemoryエラーが発生することがあります。

このエラーを回避するには、次のように-XX:InitialClassBlockMemoryオプションを使用して、JVM起動中に4GBの低ヒープでメモリーを確保します。

-XX:+UnlockDiagnosticVMOptions -XX:InitialClassBlockMemory=100M

3.13.2 マルチコア・マシンでデフォルト数のガベージ・コレクション・スレッドを使用中にスレッドが飢餓状態になる

-XXgcThreadsオプションで指定するガベージ コレクション・スレッドのデフォルト値は、マシンのコアおよびハードウェア・スレッドの数に基づいていました。

ガベージ・コレクションのヒューリスティックが改善され、ガベージ・コレクション・スレッドの数が動的に選択されるようになりました。大きなマルチコア・マシンでは、オーバーヘッドを減らすために、より保守的なガベージ・コレクション・スレッド数が動的に選択されるようになります。

3.13.3 JRockit JVMでのSUIDまたはSGIDの設定中のエラー

Javaライブラリに対してSUIDまたはSGIDを設定しない場合、有効なユーザーが実際のユーザーと同じになりませんでした。また、JRockit JVMを起動できませんでした。

この問題は修正されました。

3.14 R28.1.4で解決された問題

Oracle JRockit JDK R28.1.4で修正された問題を次に示します。

3.14.1 WindowsでJava関連のシンボリック・リンクを起動すると警告が出力される

WindowsでJava関連のシンボリック・リンクを起動すると、Oracle JRockitで次のような警告が出力されることがありました。

[WARN ][osal   ] Could not add counter \Virtual Bytes for query
[WARN ][osal   ] Failed to init virtual size counter.

これは修正済です。

3.14.2 破損したHPROFファイル

Oracle JRockitがOutOfMemoryErrorでHPROFをダンプするように構成されている場合、複数のスレッド内で複数の同時OutOfMemoryErrorを受信すると、結果のHPROFファイルが破損していることがありました。これは修正済です。

3.15 R28.1.3で解決された問題

Oracle JRockit JDK R28.1.3で修正された問題を次に示します。

3.15.1 クラス・ローダーでデッドロックが発生する(Sunバグ7001933)

カスタム・ファイル・プロトコル・ハンドラが設定されている場合、クラス・ローダーでデッドロックが発生することがありました。これは修正されました。この修正により、Sunバグ7001933が解決されます。

3.15.2 「peer not authenticated」例外が予期せずスローされる(Sunバグ6924489)

例外javax.net.ssl.SSLPeerUnverifiedException: peer not authenticatedが予期せずスローされていました。これは修正されました。この修正により、Sunバグ6924489が解決されます。

3.15.3 SO_RCVBUF/SO_SNDBUFの設定の問題(Sunバグ6984182)

Solaris 11では、カーネル・パラメータが変更された場合、SO_RCVBUF/SO_SNDBUFtcp_max_bufよりも大きい値に設定すると成功しませんでした。これは修正されました。この修正により、Sunバグ6984182が解決されます。

3.15.4 読取り専用のbytebufferをチャネル書込みメソッドに渡すと例外がスローされる

読取り専用のbytebufferをチャネル書込みメソッドに渡すと、java.nio.ReadOnlyByteBufferExceptionがスローされることがありました。これは修正済です。

3.15.5 特定のJNI APIルーチンでisCopyパラメータが正常に設定されない

JNI API Get<PrimitiveType>ArrayElementsルーチンでは、コピーを返すときにisCopyパラメータが正しくJNI_TRUEに設定されませんでした。これは修正済です。

3.15.6 不適切に最適化されたメソッドによりlong値が非常に大きくなる

32-bit JRockitのインスタンスで、メソッドが不適切に最適化されて、0になるはずのlong値が非常に大きくなることがまれにありました。これは修正済です。

3.16 R28.1.1で解決された問題

Oracle JRockit JDK R28.1.1で修正された問題を次に示します。

3.16.1 JNIオブジェクト割当てのコンカレント・スイープ中のクラッシュ

以前は、ナーサリなしでコンカレント・スイープを実行中に、Oracle JRockitがJNIから最小スレッドのローカル・エリア・サイズと一致するサイズのオブジェクトを割り当てようとしてクラッシュすることがありました。これは修正済です。

3.16.2 コマンドライン・オプションをスペルミスすると、何のメッセージもなく終了してしまう

R28.0.0以降のバージョンで、たとえば、コマンドライン・オプションを「-X:MaximumNurseryPercentage=80」のように(XXとすべきところをXに)スペルミスすると、何のメッセージもなく終了します。これはR28.1.1で修正済です。

3.16.3 arraycopyの最適化に誤りがある

まれに、Oracle JRockitは、ソース配列をターゲット配列として再び使用するように、arraycopyを誤って最適化することがあります。その結果、arraycopyの後でソース配列から誤った値が読み出されます。これは修正済です。

3.16.4 SecureRandom.generateSeedの呼出し時にJDKが固定長バイトを読み取る

SecureRandom.generateSeedが呼び出されると、JDKはエントロピー・プールから常に8192バイトを読み出していました。JDKはリクエストされたバイト数のみを読み出すように変更されています。詳細は、次を参照してください。

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6998583

3.16.5 instanceofチェックが失敗する

オプティマイザによりinstanceof opcodeの動作が誤って変更され、instanceofチェックが失敗する場合がありました。これは修正済です。

3.17 R28.1.0で解決された問題

Oracle JRockit JDK R28.1.0で修正された問題を次に示します。

3.17.1 アプリケーション管理ソリューションを使用するとOracle JRockitがハングする

CA Wily Introscopeなどのアプリケーション管理ソリューションを使用してOracle WebLogic Serverを起動した場合、Oracle JRockitが起動時にハングしていました。

この問題はJRockit R28.1.0で修正されました。

3.17.2 JMX実装でのメモリー・リーク

JDK 6のJMX実装で、メモリー・リークが発生していました。この問題は、JDK 6 Update 22でSunにより修正されました。

この修正は、JRockit R28.1.0に含まれています。

3.17.3 最適化を中断するとOracle JRockitが終了する

-XX:+|-ExitOnOutOfMemoryErrorオプションが有効な場合、コンパイラ・メモリーの制限のために最適化が中断されると、JRockitが終了していました。

この問題はJRockit R28.1.0で修正されました。

3.17.4 Eclipse Memory AnalyzerでOracle JRockitのヒープ・ダンプが開かない

ヒープ・サイズが2GB以上のとき、Eclipse Memory Analyzer (MAT)では解析できないセグメント化されたヒープ・ダンプが作成されていました。

この問題はJRockit R28.1.0で修正されました。

3.17.5 InvocationTargetExceptionラップなしで例外がスローされる

クラス・リフレクション機能を使用してメソッドを呼び出すと、Method.invoke()メソッドのシグネチャとは異なる例外タイプがスローされる場合がありました。

この問題はJRockit R28.1.0で修正されました。リフレクションを使用してメソッドを呼び出したとき、適切なInvocationTargetExceptionタイプがスローされます。

3.18 R28.0.2で解決された問題

Oracle JRockit JDK R28.0.2で修正された問題を次に示します。

3.18.1 一部のSolarisマシンでOracle JRockitの起動に時間がかかる

一部のSolarisマシンで、Oracle JRockitが警告を出力して起動に時間がかかりました。例:

[WARN ][osal   ] Failed to initialize kstat for CPU 0, ignoring

この問題はリリースR28.0.2で修正されました。

3.18.2 epollのソケット多重監視のIO例外でNoClassDefFoundErrorsがスローされる

java/lang/IOExceptionクラスを検索しようとすると、epollのソケットの多重監視からのIO例外によりNoClassDefFoundErrorがスローされることがありました。この問題はリリースR28.0.2で修正されました。

3.18.3 廃止されたコードのプルーニング中にOracle JRockitがクラッシュする

廃止されたコードへの参照のプルーニング中に、Oracle JRockitがCode_and_classgc_background_taskでクラッシュすることがありました。この問題はリリースR28.0.2で修正されました。

3.18.4 2GBを超えるJARまたはZIPファイルをOracle JRockitで開くことができない

以前のOracle JRockitリリースでは、2GBを超えるJARまたはZIPファイルを開くことができませんでした。この問題はリリースR28.0.2で修正されました。

3.18.5 XalanおよびXercesバージョンの更新

JDK 1.6.0_18で検出された機能後退を修正するためにXalanおよびXercesバージョンが更新されました。この修正は、Oracle JRockit R28.0.2 JVMに含まれています。

3.19 R28.0.1で解決された問題

Oracle JRockit JDK R28.0.1で修正された問題を次に示します。

3.19.1 コンパイラ・ディレクティブでUTF8以外の文字が検出されるとJVMクラッシュする

コンパイラ制御ディレクティブ・ファイルでUTF8以外の文字が検出されると、JVMがクラッシュします。

この問題はR28.0.1で修正されました。

3.19.2 NULLチェックが不適切に最適化され常に失敗とみなされる

try-catch句を含む特定のケースで、NULLチェックが不適切に最適化または常に失敗とみなされます。

この問題はR28.0.1で修正されました。

3.19.3 libjsig.soのプリロードを設定するとLinuxシステムが起動時にクラッシュする

Linuxシステムで、LD_PRELOAD=libjsig.so環境変数を使用してlibjsig.so(シグナル・チェーン・ライブラリ)のプリロードを設定すると、JVMが起動時にクラッシュします。このため、一部のサードパーティJNIライブラリをOracle JRockit R28で使用できません。この問題のパッチをダウンロードする場合は、JDK 6ではパッチID 9586671、JDK 5ではパッチID 9672120を参照してください。

この問題はR28.0.1で修正されました。

3.19.4 NIOセレクタ機能の障害

特定のケースで、net.dllをロードした後にnio.dllをロードしないと、NIOセレクタ機能が失敗します。これはJAVA_HOME\jre\bin\javaではなく、JAVA_HOME\bin\javaを使用した場合にのみ発生します。この問題のパッチをダウンロードする場合は、JDK 6ではパッチID 9586671、JDK 5ではパッチID 9672120を参照してください。

この問題はR28.0.1で修正されました。

3.19.5 非推奨のフラグ-XXExternalCompactRatioで不適切な警告が表示される

非推奨のコマンドライン・オプション-XXexternalCompactRatioを使用すると、次のような不適切な警告が表示されます。

[WARN ] -XXexternalCompactRatio is a deprecated option. Please use -XXcompaction:internalPercentage instead.

この問題はR28.0.1で修正されました。

3.19.6 ZipEntry初期化エラー

非圧縮エントリ(メソッドSTORED)のために作成されたjava.util.zip.ZipEntryを初期化すると、非圧縮フィールドと圧縮フィールドは同じ値で初期化されません。これによって、java.util.zip.ZipExceptionが生じることがあります。

この問題はR28.0.1で修正されました。

3.19.7 ファイナライザの実行中にZLIBコードでのクラッシュ

java.lang.util.zip.Deflater.end()を呼び出した後にjava.lang.util.zip.Deflater.deflateBytes()を呼び出すと、JVMがクラッシュすることがあります。

この問題はR28.0.1で修正され、NullPointerExceptionがスローされるようになりました。

3.19.8 x86_64マシンでの不確定な動作

x86_64マシンで、11個を超える引数を指定してメソッドを呼び出すと、Javaアプリケーションの動作が不確定になる場合があります。

この問題はR28.0.1で修正されました。

3.19.9 JavaFXクラスのコンパイルでJVMが永続的にスピンする

無限ループを含むJavaFXクラスをコンパイルすると、JRockit JVMが永続的にスピンします。

この問題はR28.0.1で修正されました。

3.19.10 JFR圧縮イベントの記述が直感的でない

GcCompaction JFRイベントの一部の記述が直感的ではありません。

この問題はR28.0.1で修正されました。

3.19.11 WindowsでのWLS NIOSocketMuxerのソケットの消失

Windowsで実行中のWebLogic ServerでNIOSocketMuxerを使用すると、ソケットが消失することがあります。

この問題はR28.0.1で修正されました。

3.20 R28.0.0で解決された問題

Oracle JRockit JDK R28.0.0で修正された問題を次に示します。

3.20.1 ACopyRemovalの明示的な型チェックの損傷

最適化コードで、配列の内部型チェックが誤った型を示すことがありました。この問題は解決されました。

3.20.2 スレッドがI/O操作をブロックするとWindowsプラットフォームでデッドロックが発生する

このリリースでは、共有ライブラリ(DLL)のロード中に、標準ストリーム(stdinstdout stderr/System.inSystem.outSystem.err)でスレッドがI/O操作をブロックした場合、Windowsプラットフォームでのデッドロックを回避するための対策が追加されました。デッドロックは、次のような状況でプロセスが起動されたときに起こります: 呼び出しがブロックされたストリームは、リダイレクトされたパイプで、通常、Process.execなどによって生成されたプロセスであるか、パイプを通じてデータの受渡しをするシェルで起動されたプロセスです。バグが生じるのは、呼出しを処理する間、このようなパイプでのI/O操作がカーネル・ロックを保持するためであり、このロックはWinAPI関数GetFileType()でも必要です。この関数は、新しいCRT DLLまたはCRT関数が静的にリンクされたDLLをロードするとき、Microsoft CRTの起動コードから呼び出されます。

このバグは、Windows Vistaより前のWindowsリリースでのみ起こります。

回避策

stdinをパイプにリダイレクトして起動されるすべてのJVMプロセスを検出します。プロセスに対するすべてのFileInputStream.read()呼出しをインターセプトし、本質的にはポーリングI/Oにより、ブロックを防止します。この回避策によって、スレッドがSystem.inから読み取る際にSystem.loadLibrary呼出しはブロックされません。System.inからの読取りに遅延が生じる可能性がありますが、ほとんどのアプリケーションで目立った遅れは生じません。

この回避策は、次の診断オプションで制御できます(-XX:+UnlockDiagnosticVMOptionsを使用してロックを解除):

  • -XX:+|-UseStdinPipeReadWorkaround: 回避策を有効化します(デフォルトは有効です)。

  • -XX:StdinPipeReadWorkaroundPollPeriod=<millis>: stdinからの読取りの期間をポーリングします(デフォルトは1です)。

注意:

  • この修正は、System.inからのNIO読取りを処理しません。これらを使用すると、JVMのデッドロックが生じる可能性があります。

  • この修正は、標準入力のリダイレクトが検出された場合にのみアクティブになります。

3.20.3 Oracle JRockit R27.xでの-XXcallProfilingの非デフォルト・フラグによる問題

このリリースは、Oracle JRockit R27.xで非デフォルト・フラグ、-XXcallProfilingを使用したときに発生する次の問題を解決します。

  • コンパイラとコードのガベージ・コレクション間のデッドロック。

  • 無効なメソッドからの呼出しプロファイリング・データのメモリー・リーク。

3.20.4 多数のプロセスを実行するWindowsコンピュータでのパフォーマンスの問題

このリリースでは、PDHヘッダーの処理でアクセスが必要なときに、同じ名前の多数の(40を超える)プロセスを実行しているWindowsマシンでのパフォーマンスの低下に関する問題、またはJRockitフライト・レコーダを実行する場合に起動時間が長くなる問題を修正します。

3.20.5 最適化コンパイラで誤った結果が生じる

Oracle JRockit最適化コンパイラは、まれに、プリミティブ型の縮小変換を含む演算で、誤った結果が生じていました。この問題は修正されました。

3.20.6 機能しないJavaランチャが製品から削除された

WindowsでのJRockit 6の機能しないJavaランチャjava-rmi.exeは、出荷時に製品に含まれていません。次のサイトでSun Bug 6512052も参照してください: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6512052

3.20.7 JVMTI_EVENT_COMPILED_METHOD_UNLOADイベントがポストされない

Oracle JRockit R27.6.0では、非推奨のメソッド・コードをアンロードする際に、JVMTI_EVENT_COMPILED_METHOD_UNLOADイベントがポストされませんでした。この問題は修正されました。