Является ли exec хорошим программным решением для решения проблем OutOfMemory? - PullRequest
4 голосов
/ 18 января 2011

Этот вопрос требует некоторой предыстории ... В моей компании мы производим набор файлов PDF и HTML. очень большой набор. Текущий процесс сборки (который я спроектировал на скорую руку) - это скрипт Perl, который читает набор файлов, где каждый файл содержит новую команду ant для выполнения.

Он разработан ужасно.

Теперь я пытаюсь перевести весь проект на использование муравья для большинства задач. Внутри цели я могу составить список файлов, которые нужно построить, в формате PDF или HTML. Однако, когда я вызываю команду ant для сборки каждого файла, после примерно трех сборок (скажем, пяти) весь процесс завершается с ошибкой OutOfMemory. Более того, мой buildlog.xml в итоге получается примерно 20 мегабайтами - он объединяет выходные данные каждой команды ant в один гигантский журнал, поскольку они вызываются из одной цели. С более ранним решением Perl я смог получить buildlog.xml для каждой команды ant - просто сохраните и переименуйте buildlog во что-нибудь другое.

Даже если я установлю размеры кучи ant или java в своих user.properties, я все равно потерплю неудачу с OOM. Интересно, может ли подходящее решение вызвать <exec>, чтобы запустить скрипт, который выполняет то, что я описал и желаю: а именно, вызвать ant, переименовать buildlog и die - теоретически распределить и освободить пространство лучше, чем один "гигант "муравейник. Я обеспокоен тем, что собираюсь найти другое «хакерское» решение проблемы, которая четко определена и может быть полностью ограничена муравьем. С другой стороны, <exec> существует ли по какой-то причине, поэтому не должен ли я чувствовать себя плохо, используя его?

1 Ответ

1 голос
/ 18 января 2011

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

Тогда , беспокойтесь о том, чтобы это работало хорошо.

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

Но вы, возможно, захотите удостовериться, что власть имущие знают, что вам пришлось делать всякие хитрости, чтобы заставить их работать на них, чтобы они позволили вам исправить это, прежде чем обслуживание будет начать на нем. Вы, вероятно, не хотите поддерживать ужасно уродливую базу кода или дизайн.

Мы выпустили в мир такие чудеса, как приложения, которые закрываются ночью, чтобы избежать утечек памяти (оставляя ОС перезапускать их), помещая «сомнительный» код на другом конце сокета TCP, чтобы их сбой не происходил. я не могу закрыть главное приложение и, я уверен, много других ужасов, которые мой мозг решил удалить все следы.

...