0

Solaris サーバーに問題があります。メモリが制限された状態で Sun Java プロセスを起動すると、2 倍以上のリソースが必要になります。

たとえば、サーバーに 64 Go のメモリがあります。1 つは Linux 上にあり、その他は Solaris 上にあります。すべてのサーバーで同じソフトウェアを実行しました(Javaのみ)。

サーバーの起動時には、400Mb から 1.2Gb の RAM が必要でした。Java プロセス (通常、Java プロセスごとに 4 ~ 16go) を起動しましたが、Xmx および Xmx 値で定義された 32 Gb を超えて実行できません。この種のエラーが発生しました:

> /java -d64 -Xms8G -Xmx8G -version
Error occurred during initialization of VM
Could not reserve enough space for object heap

ここでわかるように、多くの予約済みメモリがあり、それは Java プロセスによって作成されています。

> swap -s
total: 22303112k bytes allocated + 33845592k reserved = 56148704k used, 704828k available

それらを1つずつ殺すとすぐに、予約済みのスペースを回復し、他のスペースを起動できます. しかし、実際には半分以上のメモリを使用できません。

この問題を解決する方法を知っている人はいますか?

ありがとう

4

1 に答える 1

1

問題は Linux がメモリ割り当てをコミットしているのに対し、Solaris は割り当てたものが仮想メモリに収まるようにすることだと思います。それが Linux の利点だと思うなら、Linux OOM キラーがミッション クリティカルなアプリケーションを最悪の段階で無作為に殺してしまったときに、それを再考するかもしれません。

この問題を解決するには、Solaris にスワップ領域を追加するだけです。

于 2010-01-15T00:44:05.093 に答える