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