2

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を消費します)

4

2 に答える 2

2

ほとんどの 32 ビット マシン (Linux のほとんどのフレーバーを含む) では、プロセスが割り当てることができる最大メモリは約2Gです。ここで、ヒープ1.2Gを使用していると言った場合、最悪の場合、perm genが残りの800Mを消費していると想定します。 -XX:MaxPermSize=200Mを設定して確認してください。

于 2011-03-18T09:54:35.943 に答える
0

問題は、アプリ サーバー全体に 1G ~ 2G のヒープ サイズを割り当てることだと思います。それ自体でいくらかのメモリを消費しますが、どれだけかはわかりません。ただし、アプリ サーバーを最大 2G のメモリで起動すると、webapp で使用できるメモリは明らかに 2G 未満になります。

于 2011-03-18T09:57:03.310 に答える