エラー・ログの最後のセクションは、システム情報です。その出力はオペレーティング・システムに固有ですが、一般にオペレーティング・システムのバージョン、CPU情報、およびメモリー構成に関するサマリー情報を含みます。
例A-21は、Oracle Solaris 9オペレーティング・システムでの出力を示しています。
例A-21 エラー・ログ内のシステム情報
--------------- S Y S T E M --------------- OS: Oracle Solaris 9 12/05 s9s_u5wos_08b SPARC Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms. Assembled 21 November 2005 uname:SunOS 5.9 Generic_112233-10 sun4u (T2 libthread) rlimit: STACK 8192k, CORE infinity, NOFILE 65536, AS infinity load average:0.41 0.14 0.09 CPU:total 2 has_v8, has_v9, has_vis1, has_vis2, is_ultra3 Memory: 8k page, physical 2097152k(1394472k free) vm_info: Java HotSpot(TM) Client VM (1.5-internal) for Oracle Solaris-sparc, built on Aug 12 2005 10:22:32 by unknown with unknown Workshop:0x550
Oracle SolarisおよびLinuxの場合、オペレーティング・システム情報はファイル/etc/*releaseに含まれます。このファイルは、アプリケーションが実行されているシステムの種類について説明し、場合によっては情報文字列にパッチ・レベルが含まれることもあります。/etc/*releaseファイルには一部のシステム・アップグレードが反映されません。ユーザーがシステムの任意の部分を構築し直せるLinuxシステムの場合は、特にそうなります。
Oracle Solarisオペレーティング・システムでは、uname
システム・コールを使用してカーネルの名前を取得します。スレッド・ライブラリ(T1またはT2)も出力されます。
Linuxシステムの場合もuname
システム・コールを使ってカーネル名が取得されます。例A-22に示すように、libc
のバージョンとスレッド・ライブラリのタイプも出力されます。
例A-22 エラー・ログのスレッド・ライブラリ・タイプ
uname:Linux 2.4.18-3smp #1 SMP Thu Apr 18 07:27:31 EDT 2002 i686 libc:glibc 2.2.5 stable linuxthreads (floating stack) |<- glibc version ->|<-- pthread type -->|
Linuxの場合、可能なスレッド・タイプは3つあります(具体的にはlinuxthreads (fixed stack)
、linuxthreads (floating stack)
、およびNPTL
)。これらは通常、/lib、/lib/i686、および/lib/tlsにインストールされます。
スレッド・タイプを知ることは有用です。たとえば、クラッシュがpthread
に関係しているように見える場合、別のpthread
ライブラリを選択すれば問題を回避できる可能性があります。別のpthread
ライブラリ(およびlibc
)を選択するには、LD_LIBRARY_PATH
またはLD_ASSUME_KERNEL
を設定します。
glibc
のバージョンには通常、パッチ・レベルは含まれません。コマンドrpm -q glibc
を実行すると、より詳しいバージョン情報が得られる可能性があります。
Oracle SolarisおよびLinuxオペレーティング・システムでは、その次の情報はrlimit
情報です。注意: 例A-23に示すように、VMのデフォルトのスタック・サイズは通常、システムの制限より小さくなっています。
例A-23 エラー・ログのrlimit情報
rlimit: STACK 8192k, CORE 0k, NPROC 4092, NOFILE 1024, AS infinity | | | | virtual memory (-v) | | | +--- max open files (ulimit -n) | | +----------- max user processes (ulimit -u) | +------------------------- core dump size (ulimit -c) +---------------------------------------- stack size (ulimit -s) load average:0.04 0.05 0.02
その次の情報は、例A-24に示すように、起動時にVMによって識別されたCPUのアーキテクチャと機能を指定します。
例A-24 エラー・ログ内のCPUアーキテクチャと機能
CPU:total 2 family 6, cmov, cx8, fxsr, mmx, sse | | |<----- CPU features ---->| | | | +--- processor family (IA32 only): | 3 - i386 | 4 - i486 | 5 - Pentium | 6 - PentiumPro, PII, PIII | 15 - Pentium 4 +------------ Total number of CPUs
表A-4は、SPARCシステムで可能なCPU機能を示しています。
表A-4 SPARCの機能
SPARCの機能 | 説明 |
---|---|
|
v8命令をサポートします。 |
|
v9命令をサポートします。 |
|
視覚化命令をサポートします。 |
|
視覚化命令をサポートします。 |
|
UltraSparc III。 |
|
ハードウェア整数乗除なし。 |
|
Multiply-AddおよびMultiply-Subtract命令なし。 |
表A-5は、Intel/IA32システムで可能なCPU機能を示しています。
表A-5 Intel/IA32の機能
Intel/IA32の機能 | 説明 |
---|---|
|
cmov命令をサポートします。 |
|
cmpxchg8b命令をサポートします。 |
|
fxsaveとfxrstorをサポートします。 |
|
MMXをサポートします。 |
|
SSE拡張をサポートします。 |
|
SSE2拡張をサポートします。 |
|
ハイパースレッディング・テクノロジをサポートします。 |
表A-6は、AMD64/EM64Tシステムで可能なCPU機能を示しています。
表A-6 AMD64/EM64Tの機能
AMD64/EM64Tの機能 | 説明 |
---|---|
|
AMD Opteron、Athlon64など。 |
|
Intel EM64Tプロセッサ。 |
|
3DNow拡張をサポートします。 |
|
ハイパースレッディング・テクノロジをサポートします。 |
エラー・ログ内のその次の情報は、例A-25に示すように、メモリー情報です。
例A-25 エラー・ログのメモリー情報
unused swap space total amount of swap space | unused physical memory | | total amount of physical memory | | | page size | | | | v v v v v Memory: 4k page, physical 513604k(11228k free), swap 530104k(497504k free)
一部のシステムではスワップ空間が実際の物理メモリーの少なくとも2倍であることを要求しますが、そのような要件を持たないシステムもあります。一般に、物理メモリーとスワップ空間の両方がほぼいっぱいになっていれば、クラッシュの原因としてメモリー不足を疑って良いでしょう。
Linuxシステムではカーネルが、未使用の物理メモリーの大部分をファイル・キャッシュに変換する場合があります。追加のメモリーが必要になると、Linuxカーネルはキャッシュ・メモリーをアプリケーションに戻します。この処理はカーネルによって透過的に行われますが、それは、使用可能な物理メモリーがまだ十分存在するにもかかわらず、致命的エラー・ハンドラが報告する未使用物理メモリーの量がゼロに近くなる可能性があることを意味します。
エラー・ログのSYSTEMセクション内の最後の情報はvm_info
で、これはlibjvm.so/jvm.dllに埋め込まれたバージョン文字列です。どのJava VMも一意のvm_info
文字列を持ちます。特定のJava VMによって致命的エラー・ログが生成されたのかどうかを疑問に思う場合には、バージョン文字列をチェックしてください。