Что такое надежная стратегия для того, чтобы ограничения памяти были частью процесса сборки?

ПРОБЛЕМА

У меня есть сервер сборки, который проходит все тесты, но на некоторых машинах тесты терпят неудачу из-за ограничений памяти.

ПРЕДЛОЖЕННОЕ РЕШЕНИЕ

Я хочу добавить точные пределы памяти для моего скрипта сборки Ant - есть ли простой способ сделать это, чтобы все JVM, используемые для компиляции, сборки и тестирования моей программы, имели одинаковые спецификации памяти? Кроме того, обратите внимание: я не хочу "фиксировать" исправление, добавляя определенные флаги "-Xmx" в сценарии оболочки - скорее, я хочу, чтобы ограничения памяти были естественным и неотъемлемым аспектом сборки ANT.

САМЫЙ ВАЖНО: как и следовало ожидать, приоритет здесь заключается в том, что я НЕ хочу, чтобы тесты терпели неудачу из-за неизвестных, специфичных для машины параметров JVM. Скорее, я хотел бы, чтобы сборка полностью остановилась, перед компиляцией/тестированием /etc, если JVM находится ниже требований к памяти.

ОБОСНОВАНИЕ

Это вызывает беспокойство, когда конкретный unit тест выходит из строя из-за памяти, потому что вы не знаете, что ошибка вызвана неправильным кодом (т.е. Утечкой памяти) или просто плохой настройкой жесткого /JVM. Таким образом, было бы желательно сделать "память" "не движущейся" частью механизма сборки.

1 ответ

Зависит от того, как вы выполняете свои тесты, о которых вы не упоминаете.

Например, задача maxmemory имеет свойство maxmemory.

Если вы не разветвляетесь, вы также можете столкнуться с проблемами памяти.

Более подробная информация позволит людям лучше ориентировать ответы.

После редактирования

Вы указываете параметры JVM, даже если на машине заданы системные свойства, которые они могут быть переопределены пользователем, системой CI и т.д.

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

Параметры сборки, сценариев и задач Ant - это способ определения согласованных параметров памяти и обеспечения выполнения JVM в согласованном состоянии при запуске.

licensed under cc by-sa 3.0 with attribution.