Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • クラスは指定の "クラス・キャッシュ" に保管されます。このクラス・キャッシュは、メモリーマップ・ファイル、または、最初にキャッシュを使用する JVM により割り当てられた共有メモリー領域のいずれかです。
  • すべての JVM はキャッシュから読み込み、更新できますが、JVM が一度に接続できるキャッシュは 1 つだけです。
  • キャッシュは、このキャッシュに接続された JVM の有効期間が過ぎても存続します。これは明示的に消去されるまで、あるいはオペレーティング・システムが停止するまで持続します。
  • JVM がクラスをロードする場合、最初に接続されているキャッシュ内のクラスを探し、必要なクラスが見つかればキャッシュからそのクラスをロードします。
  • キャッシュ内にクラスが見つからない場合、ディスクからクラスをロードし、そのクラスを適宜キャッシュに追加します。
  • キャッシュに空きが無い場合、キャッシュ内のクラスは共有できますが、新しいデータは追加できません。
  • クラス・キャッシュは、キャッシュに接続されている JVM の有効期間を過ぎても存続するため、ファイル・システム上のクラスに変更が加えられた場合、キャッシュ内のクラスの内容が古い状態になる場合があります。この状況は透過的に管理されます。つまり、更新されたバージョンのクラスがクラスをロードする次の JVM で検出され、クラス・キャッシュは適宜更新されます。
  • 実行時に修正されるバイトコードの共有はサポートされますが、注意して使用する必要があります。
  • クラス・データ・キャッシュへのアクセスは、セキュリティ・マネージャーがインストールされている場合、Java 権限で保護されます。
  • リフレクションで生成されたクラスは共有できません。
  • 共有できるのは、変更されないクラス・データのみです。リソース、オブジェクト、JITコンパイル済みコード、および同様の項目をキャッシュに保管することはできません。

共有クラスの作成

共有クラスを切り替えるには、SystemDefault.properties -Xshareclassesオプションと-Xscmx command-lineオプションを使用します。

...

  • Xshareclasses:<サブオプション> はクラス共有を有効にします。多くのサブオプションを取り、その一部はキャッシュ・ユーティリティになります。キャッシュ・ユーティリティは、VMを開始せずに指定したキャッシュに対して必要な操作を行います。複数のサブオプションをコンマで区切って組み合わせることができますが、キャッシュ・ユーティリティは相互排他になります。

#AllowOptions
 
-Xscmx16M
-Xshareclasses:name=myJSM

共有クラスのリスト表示

キャッシュをリスト表示する場合、共有クラス・キャッシュを作成したときと同じJVMを使用する必要があります。ただし、すべてのバージョンのキャッシュをリスト表示するJDK6バージョンを除きます。

...

Tip

ヒント:JAVA_HOME環境変数を設定するのではなく、JDKのjavaシェル・スクリプト・ファイルの絶対パスを使用します。


QSH
 
/QOpenSys/QIBM/ProdData/JavaVM/jdk60/64bit/bin/java -Xshareclasses:listAllCaches
 
    すべてのキャッシュは cacheDir /tmp/javasharedresources/ にリストされます。
    Cache name              level         persistent  last detach time
    Compatible shared caches                                                
    myJSM                   Java6 64-bit  yes         In use
 
    Incompatible shared caches
    myJSM                   Java5 64-bit  no          Wed Jun 25 14:49:44 2019
    myJSM                   Java5 32-bit  no          Wed Jun 25 14:46:06 2019
    myJSM                   Java6 32-bit  yes         Wed Jun 18 12:18:59 2019
 

Note

注:4つの JSM キャッシュがあり、開始された STRJSMJVM バージョンごとに 1 つのキャッシュがあります。

共有クラスの消去

キャッシュを消去する場合、共有クラス・キャッシュが作成されたときと同じJVMを使用する必要があります。


QSH
 
/QOpenSys/QIBM/ProdData/JavaVM/jdk50/64bit/bin/java -Xshareclasses:destroy,name=myJSM
 
JVMSHRC010I の共有キャッシュ "myJSM" が消去されました。
Java 仮想マシンは作成できません。