Почему Sun Java на Solaris занимает более двух раз RSS-память? - PullRequest
0 голосов
/ 14 января 2010

У меня проблема с моими серверами Solaris. Когда я запускаю процесс Sun Java с ограниченной памятью, он потребляет вдвое больше ресурсов.

Например, у меня на серверах 64 Go памяти. 1 на Linux, остальные на Solaris. Я запускал одинаковые программы на всех серверах (только Java).

При запуске серверов они занимали от 400 МБ до 1,2 ГБ ОЗУ. Я запускаю свой java-процесс (обычно от 4 до 16go на каждый java-процесс), и я не могу запустить более 32 Гб, определенных со значениями Xmx и Xmx. Я получил такие ошибки:

> /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 на 1, я возвращаю зарезервированное место и могу запускать другие. Но на самом деле я не могу использовать больше половины своей памяти.

Кто-нибудь знает, как решить эту проблему?

Спасибо

1 Ответ

1 голос
/ 15 января 2010

Я полагаю, что проблема заключается в том, что Linux перераспределяет память, в то время как Solaris следит за тем, чтобы вы выделяли ее в виртуальной памяти. Если вы думаете, что это преимущество Linux, вы можете пересмотреть его, когда убийца Linux OOM случайно убьет ваше критически важное приложение на худшей стадии.

Чтобы решить эту проблему, просто добавьте больше пространства подкачки в Solaris.

...