Какова надежная стратегия для того, чтобы сделать ограничения памяти частью процесса сборки? - PullRequest
0 голосов
/ 02 декабря 2011

ПРОБЛЕМА

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

ПРЕДЛАГАЕМОЕ РЕШЕНИЕ

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

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

ОБОСНОВАНИЕ

Весьма неприятно, когда какой-то конкретный модульный тест не проходит из-за памяти, потому что вы не знаете, является ли сбой из-за плохого кода (то есть утечки памяти) или просто из-за неправильной настройки жесткого диска / JVM. Таким образом, было бы желательно сделать «память» «неподвижной» частью в сборочном движке.

1 Ответ

1 голос
/ 02 декабря 2011

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

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

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

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

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

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

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

Ваша сборка Ant, сценарии и параметры задачи являются способом определения согласованных параметров памяти и обеспечения согласованной работы JVM при запуске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...