Непрерывная Интеграция для проектов XCode?

Ну, я тоже долго об этом задумывался, и я попытался провести несколько тестов, чтобы лучше понять, что происходит под капотом. Стандартный ответ заключается в том, что после вызова delete вы не должны ожидать ничего хорошего от доступа к этому месту памяти. Однако этого мне не показалось. Что на самом деле происходит при вызове delete (ptr) ? Вот что я нашел. Я использую g ++ на Ubuntu 16.04, так что это может сыграть роль в результатах.

То, что я раньше ожидал при использовании оператора delete, было то, что освобожденная память будет возвращена системе для использования в другие процессы. Позвольте мне сказать, что этого не происходит ни при каких обстоятельствах, которые я пробовал.

Память, выпущенная с помощью delete , по-прежнему кажется выделенной программе, в которую она сначала выделила ее с помощью новый . Я пробовал, и уменьшение использования памяти после вызова delete . У меня было программное обеспечение, которое вырезало около 30 МБ списков через новые вызовы , а затем выпустило их с последующими вызовами delete . Случилось так, что, глядя на монитор системы во время работы программы, даже длительный сон после вызова delete , потребление памяти моей программы было одинаковым. Никакого снижения! Это означает, что delete не освобождает память системы.

На самом деле, похоже, что память, выделенная программой, является его вечно! Тем не менее, дело в том, что при освобождении памяти память может снова использоваться одной программой без необходимости выделять ее. Я попытался выделить 15 МБ, освободив их, а затем выделив еще 15 МБ данных, а программа никогда не использовала 30 МБ. Системный монитор всегда показывал его около 15 МБ. То, что я делал по отношению к предыдущему тесту, заключалось в том, чтобы изменить порядок, в котором все произошло: половина распределения, половина освобождения, другая половина распределения.

Итак, память, используемая программой, может увеличиваться, но никогда не сжиматься. Я думал, что, возможно, память действительно будет выпущена для других процессов в критических ситуациях, например, когда больше нет памяти. В конце концов, какой смысл это сделать, чтобы программа сохраняла свою собственную память навсегда, когда другие процессы просят об этом? Поэтому я снова выделил 30 МБ, и, освободив их, я запустил memtester с такой физической памятью, сколько мог. Я ожидал увидеть, что мое программное обеспечение передает свою память memtester. Но догадаться, этого не произошло!

Я составил короткий скринкаст, который показывает, что в действии:

Чтобы быть на 100% честным, возникла ситуация, когда произошло что-то . Когда я попробовал memtester с большей доступной физической памятью в середине процесса освобождения моей программы, память, используемая моей программой, упала примерно до 3 МБ. Процесс memtester был убит автоматически, хотя и что произошло еще более удивительно! Использование памяти моей программы увеличилось с каждым вызовом на удаление! Это было похоже на то, что Ubuntu восстанавливает всю память после инцидента с memtester.

Взято из http://www.thecrowned.org/c-delete-operator-really- frees-memory

blockquote>

55
задан Mike Akers 17 October 2008 в 17:10
поделиться

6 ответов

Я успешно использую Hudson на Mac с xcodebuild. С выпуском 3.0 iPhone sdk у вас есть полный контроль над целью, конфигурацией и sdk, на основе которых будет построен проект.

Это так же просто, как создать этап сборки в hudson и указать xcodebuild построить проект:

xcodebuild -target "myAppAppStore" -configuration "DistributionAppStore" -sdk iphoneos2.1

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

Распространение приложений для iPhone стало проще

37
ответ дан 26 November 2019 в 17:26
поделиться

Я использовал CruiseControl с XCode (similiar, к какой Прагматическая предложенная Автоматизация), и имели разумный успех. Я также очень знаком с CruiseControl, и это - относительно ужасающая установка формата конфигурации.

я также использовал BuildBot успешно, но нашел, что это - преимущества, действительно не соответствовал моим потребностям (распределенное ведомое здание и создание отчетов через несколько различных систем). Конфигурирование buildbot установки может быть искусством в и себя, хотя это не трудно. Это все по существу пишет сценарии в Python.

, Так как Гудзон стал доступным, я рекомендовал бы его как путь для выполнения непрерывной интеграции. Это имеет веб-интерфейс (основной дефицит CruiseControl в моем уме) и очень гибко в различных системах, которые это поддерживает. Можно вызвать командную строку управляемые сборки довольно легко и очень очевидно. Однако я не настроил экземпляр с помощью Гудзона и XCode, где я имею для других систем, таким образом, это - частично предположение с моей стороны.

8
ответ дан heckj 7 November 2019 в 17:24
поделиться

Adium использует buildbot с XCode вполне эффективно. Мы записали простой make-файл, который называет xcodebuild с надлежащими целями и конфигурациями, но я вполне уверен, это является дополнительным.

9
ответ дан Colin Barrett 7 November 2019 в 17:24
поделиться

Я думаю, что необходимо все еще быть в состоянии использовать Гудзон. Гудзон очень гибок и позволяет Вам также использовать сценарии оболочки для создания: Сценарии оболочки и Windows Batch Commands

Просто входят там xcodebuild. Смотрите на xcodebuild страницу справочника для наблюдения опций xcodebuild.

4
ответ дан catlan 7 November 2019 в 17:24
поделиться

Если Вы не возражаете жить на лезвии, я только что фиксировал разработчик XCode для CruiseControl.

4
ответ дан Jeffrey Fredrick 7 November 2019 в 17:24
поделиться

Восстановление этой резьбы. Я не нашел удовлетворительного решения для получения автоматизированных сборок XCode с помощью юнит-тестов на сборочном сервере, поэтому я провел некоторые исследования и кодировку. В результате этот пост в блоге объясняет все это и этот Ruby скрипт , который конвертирует вывод OCUnit из xcodebuild в XML формат, который JUnit использует для тестовых отчетов. Сервером сборки, который я выбрал, был Хадсон.

Обновление 3/2 2012: Я обновил его, чтобы использовать некоторые пользовательские скрипты оболочки для сборки и запуска. Available here. Это хорошо не только для непрерывной интеграции, но и для сборки из командной строки на вашей собственной машине.

13
ответ дан 26 November 2019 в 17:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: