У меня есть сервер Solaris sparc (64-разрядный), который имеет 16 ГБ памяти.На нем запущено много небольших Java-процессов, но сегодня я получил ошибку «Не удалось зарезервировать достаточно места для кучи объектов» при попытке запустить новый.Я был удивлен, так как на сервере оставалось более 4 ГБ свободного места.Новый процесс удалось успешно запустить после того, как некоторые другие процессы были закрыты;система определенно достигла какого-то предела.
После поиска в Интернете объяснений я начал задумываться, не связано ли это с тем, что я использую 32-разрядную JVM (ни одна изjava-процессы на этом сервере требуют очень много памяти).
Я считаю, что максимальный пул памяти по умолчанию составляет 64 МБ, и я выполнял около 64 из этих процессов.Так что все будет 4 ГБ ... прямо на 32-битном пределе.Но я не понимаю, почему или как на какой-либо из этих процессов будут влиять другие.Если я прав, то для запуска большего количества этих процессов мне придется либо настроить максимальную кучу ниже, чем по умолчанию, либо переключиться на использование 64-битной JVM (что может означать повышение максимальной кучи).быть выше, чем значение по умолчанию для этих процессов).Я не против ни одного из них, но я не хочу тратить время впустую, и это все еще выстрел в темноте прямо сейчас.
Может кто-нибудь объяснить, почему это может работать таким образом?Или я полностью ошибаюсь?
Если я прав насчет объяснения, то, вероятно, есть документация по этому вопросу: я бы очень хотел его найти.(Я запускаю обновление JDK 6 от Sun, если это имеет значение.)
Редактировать : Я полностью ошибся .Приведенные ниже ответы подтвердили мой инстинктивный инстинкт, что нет причины, по которой я не смогу запустить столько JVM, сколько смогу удержать.Через некоторое время на том же сервере я получил ошибку при попытке запустить не-Java-процесс: «fork: недостаточно места».Так что есть еще одно ограничение, с которым я сталкиваюсь и которое не зависит от Java.Я должен выяснить, что это такое (нет, это не пространство подкачки).Скорее всего, к серверу я иду.