Javac -Xmx для ограничения использования виртуальных машин - PullRequest
4 голосов
/ 05 марта 2011

есть ли способ ограничить максимальное использование виртуальной памяти javac? При запуске Java, я могу запустить его с «-XmxAm» (где A - количество свободных мегабайт), чтобы ограничить его. Есть ли что-нибудь для Javac, как это? Спасибо.

Ответы [ 3 ]

15 голосов
/ 05 марта 2011

Вы можете предоставить те же параметры времени выполнения для javac (и для большинства java-программ с собственным собственным стартером), используя параметры -J.По соглашению все такие параметры передаются непосредственно в систему времени выполнения.Таким образом, в вашем случае вы можете вызвать

javac -J-Xmx5m -J-Xmx4m  <source>

для запуска javac с очень небольшим объемом памяти.Конечно, как сказал ресетер, этот способ ограниченно используется, так как для компиляции javac может действительно понадобиться некоторое количество памяти.В действительно больших проектах вы можете увеличить память таким способом.

1 голос
/ 05 марта 2011

Я так не думаю.Для работы компилятору необходимо построить полное синтаксическое дерево и т. Д., Поэтому ограничение использования памяти не будет лучшей идеей.

0 голосов
/ 28 июня 2012

Для оболочки Unix вы можете использовать команду ulimit (http://ss64.com/bash/ulimit.html).

bash -c ' ulimit -v 1048576; javac PrettyWoman.java '. 

-v option - это ограничение виртуальной памяти для процесса javac.

Однако для этого требуется много виртуальной памяти, в противном случае возникает следующая ошибка,

'Произошла ошибка при инициализации ВМ. Не удалось зарезервировать достаточно пространство для кучи объектов. Не удалось создать виртуальную машину Java. "

Примечание: метод java - thread.sleep не будет учитываться в ограничении времени ulimit (в режиме реального времени и времени ЦП), поэтому, если вы используете ulimit вместе с файлом java, файл java может просто спать без изменений.

...