2

Я хотел бы запустить Java-программу с интенсивным использованием памяти и ограничить объем используемой физической памяти.

Можно ли настроить JVM для использования не более 1 ГБ ОЗУ и использовать только виртуальную память после того, как она использовала первые 1 ГБ ОЗУ?

Мне бы хотелось, чтобы программа имела столько адресного пространства, сколько ей нужно (несколько ГБ), но не хочу, чтобы она использовала всю доступную оперативную память на машине.

2 ответа2

3

Я нашел работоспособное решение для Ubuntu:

Используя системную утилиту ulimit я смог установить максимальную физическую память и многие другие ограничения ресурсов для любых процессов, порожденных из оболочки, из которой вызывался ulimit .

Все, что мне нужно было сделать, это открыть оболочку, вызвать ulimit и запустить процесс.

1

Нет, я не знаю ни одного решения, которое позволило бы вам сделать это. Я не уверен, что это возможно даже без серьезных архитектурных изменений; в конце концов, ОС обычно в каждом конкретном случае решает, какие данные следует поменять, а какие оставить в оперативной памяти. Мне не ясно, что такое ограничение было бы даже практичным; во всяком случае, это, вероятно, потребует глубоких изменений в ОС.

Встречный вопрос: почему вы считаете это необходимым? Подсистема виртуальной памяти современной ОС была точно настроена для обеспечения максимальной производительности. Что заставляет вас верить, что вы можете сделать лучше?

Плюс:

Если у вас действительно есть проблемы с памятью, просто купите больше оперативной памяти. 4Гб стоят примерно 100 долларов, просто купить их, вероятно, эффективнее, чем тратить часы на тонкую настройку подсистемы ВМ ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .