У меня проблема с Java-приложением, работающим под Linux.
Когда я запускаю приложение, используя максимальный размер кучи по умолчанию (64 МБ), я вижу, что приложение tops использует 240 МБ виртуальной памяти для приложения. Это создает некоторые проблемы с некоторым другим программным обеспечением на компьютере, которое относительно ограничено ресурсами.
Зарезервированная виртуальная память не будет использоваться в любом случае, насколько я понимаю, потому что, как только мы достигнем предела кучи, будет выбрано значение OutOfMemoryError
. Я запустил одно и то же приложение под окнами, и я вижу, что размер виртуальной памяти и размер кучи похожи.
В любом случае я могу настроить виртуальную память, используемую для процесса Java в Linux?
Изменить 1. Проблема не в куче. Проблема в том, что если я установил кучу 128 МБ, то, по-прежнему, Linux выделяет 210 МБ виртуальной памяти, которая не нужна никогда. **
Изменить 2. Использование ulimit -v
позволяет ограничить объем виртуальной памяти. Если размер установлен ниже 204 МБ, то приложение не будет работать, даже если ему не требуется 204 МБ, всего 64 МБ. Поэтому я хочу понять, почему Java требует столько виртуальной памяти. Можно ли это изменить?
Изменить 3. В системе есть несколько других приложений, которые встроены. И система имеет ограничение виртуальной памяти (от комментариев, важных деталей).