Archives

You are currently viewing archive for 03 May 2009
Category: Web dev
Posted by: hajime osako
•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 サポートに証拠として提示できるので便利です。

05/03: Java > Heap

Category: Web dev
Posted by: hajime osako
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