Oracle App Server 10.1.3に、32GbのRAMを表示するように構成された32ビットのRHELで1Gbの初期ヒープと2Gbの最大ヒープで開始されたoc4jにWebアプリケーションをデプロイしています。最近、OutOfMemoryエラーが発生したため、OutOfMemにヒープダンプを作成するようにアプリを構成しました。したがって、4〜5個のヒープダンプがあり、それぞれのサイズは1.2 Gb以下です(最大ヒープサイズより800 Mb小さい)。また、平均時間にマシンで無料で実行すると、約20Gbの無料RAMが表示されます。
これは、アプリケーションが一度に800 Mbを割り当てようとすることを意味しますか?または、同時にメモリを割り当てようとするスレッドが2つ以上ある場合、それぞれにメモリがあるが、両方の合計にはメモリがないとしても、両方とも失敗しますか?Linuxマシンにpbがある可能性がありますか、Javaにメモリを与えることができない可能性がありますか?メモリが断片化されている可能性がありますか?32ビットマシンが32 GbのRAMを認識できるようにする構成にはpbがありますか?
(アプリケーションは最近変更されていませんが、そのマシンに新しいoc4jと新しいアプリケーションがレイリーにデプロイされており、1〜2gのRAMを消費します)