05/03: Java > Process size check
•Linux: ps -p -o `cmd vsz'
•Win: perfmon
システムのクラッシュ
Windows
Windows ツールの perfmon を使用して、PrivateBytes プロセス カウンタを記録します。JVM プロセスで予約された仮想メモリの量に関する情報を収集してください。次の手順に従います。
1. [管理ツール] の [パフォーマンス モニタ] を開きます。
2. [+] をクリックして [カウンタの追加] ダイアログ ボックスを開きます。
3. [パフォーマンス オブジェクト] ドロップダウン リストを開いて [Process] をクリックします。
4. [Process] のリストから [Private Bytes] のカウンタを選択します。
5. 監視するプロセスを選択して [追加] をクリックします。
Linux
仮想メモリの使用状況を、一定の間隔で記録するためのスクリプトを作成します。以下に例を示します。
top -b -n 10 > virtualmemory.log
このスクリプトは 10 秒おきに「top」を実行し、そのデータを virtualmemory.log ファイルに記録します。実行中の全プロセスの仮想メモリ使用量が、このファイルの VIRT 列に記録されます。現在の状態だけを確認するには、top と入力して〔Shift〕+〔M〕を押し、出力をメモリ使用量でソートします。これで、通常は JVM プロセスが出力の一番上に並びます。
Virtualmemory.log のような記録を作成すると、JRockit JVM プロセスによってメモリ使用量が実際に増加していることを確認でき、それを BEA サポートに証拠として提示できるので便利です。
•Win: perfmon
システムのクラッシュ
Windows
Windows ツールの perfmon を使用して、PrivateBytes プロセス カウンタを記録します。JVM プロセスで予約された仮想メモリの量に関する情報を収集してください。次の手順に従います。
1. [管理ツール] の [パフォーマンス モニタ] を開きます。
2. [+] をクリックして [カウンタの追加] ダイアログ ボックスを開きます。
3. [パフォーマンス オブジェクト] ドロップダウン リストを開いて [Process] をクリックします。
4. [Process] のリストから [Private Bytes] のカウンタを選択します。
5. 監視するプロセスを選択して [追加] をクリックします。
Linux
仮想メモリの使用状況を、一定の間隔で記録するためのスクリプトを作成します。以下に例を示します。
top -b -n 10 > virtualmemory.log
このスクリプトは 10 秒おきに「top」を実行し、そのデータを virtualmemory.log ファイルに記録します。実行中の全プロセスの仮想メモリ使用量が、このファイルの VIRT 列に記録されます。現在の状態だけを確認するには、top と入力して〔Shift〕+〔M〕を押し、出力をメモリ使用量でソートします。これで、通常は JVM プロセスが出力の一番上に並びます。
Virtualmemory.log のような記録を作成すると、JRockit JVM プロセスによってメモリ使用量が実際に増加していることを確認でき、それを BEA サポートに証拠として提示できるので便利です。
05/03: Java > Heap
How to fix "java.lang.OutOfMemoryError: unable to create new native thread"
For Java 1.5 I get the following results assuming that the OS reserves about 120MB:
1.5GB allocated to JVM: (2GB-1.5Gb-120MB)/(1MB) = ~380 threads
1.0GB allocated to JVM: (2GB-1.0Gb-120MB)/(1MB) = ~880 threads
Java 1.4 uses 256kb for the thread stack which lets you create a lot more threads:
1.5GB allocated to JVM: ~1520 threads
1.0GB allocated to JVM: ~3520 threads
For Java 1.5 I get the following results assuming that the OS reserves about 120MB:
1.5GB allocated to JVM: (2GB-1.5Gb-120MB)/(1MB) = ~380 threads
1.0GB allocated to JVM: (2GB-1.0Gb-120MB)/(1MB) = ~880 threads
Java 1.4 uses 256kb for the thread stack which lets you create a lot more threads:
1.5GB allocated to JVM: ~1520 threads
1.0GB allocated to JVM: ~3520 threads