エラー・ログの最後のセクションは、システム情報です。 その出力はオペレーティング・システムに固有ですが、一般にオペレーティング・システムのバージョン、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によって致命的エラー・ログが生成されたのかどうかを疑問に思う場合には、バージョン文字列をチェックしてください。