Сборка "мусора" используется в производственных качественных приложениях Какао?

Я главным образом задаюсь вопросом о влиянии, которое сборка "мусора" имела бы на производительности. Использование сборки "мусора" осуждено для приложений выпуска?

Другая озабоченность, что я могу думать, - то, что использование сборки "мусора" могло привести к более неаккуратному программированию.

Вы используете сборку "мусора" в своих приложениях?

7
задан calvinlough 2 January 2010 в 20:37
поделиться

5 ответов

Сбор мусора используется во многих областях качества производства. Xcode, Automator, System Preferences и некоторые другие системные приложения являются GC d, и можно ожидать, что эта тенденция будет продолжаться с течением времени.

Кроме того, многие разработчики взяли на вооружение GC и используют его исключительно в своих приложениях. Например, новые версии Quicken и QuickBooks для Mac от Intuit'а - это мусор, собранный.

Есть и ряд преимуществ GC. Сверху в голове и из личного опыта:

  • это облегчает многопоточность; простое присвоение - это атомная декларация собственности

  • это сбрасывает кучу управления памятью с других ядер; это естественно параллельно и сбрасывает кучу вычислений из главного потока (или вычислительных потоков)

  • во многих случаях выделение и распределение может происходить полностью в контексте потока, тем самым устраняя любую необходимость в глобальной синхронизации или блокировке

  • коллектора с каждым выпуском Mac OS X, и эта тенденция будет продолжаться (так же, как и с остальной частью системы). Снимая большую вычислительную нагрузку с вашего приложения на фреймворки, предоставляемые системой, ваше приложение будет получать все больше и больше от оптимизаций к базовой системе.

  • поскольку коллектор обладает глубоким знанием объектного графика -- указателей между объектами -- в памяти, это значительно облегчает анализ и отладку. Вместо того, чтобы "откуда взялся этот висячий указатель?", теперь возникает вопрос "Дайте мне список причин, почему этот объект торчит дольше, чем я думаю?"

Это не значит, что не надо работать над тем, чтобы ваше приложение работало оптимально под управлением GC. Конечно, такие задачи есть!

.
22
ответ дан 6 December 2019 в 05:48
поделиться

I use GC whenever I can, because the best code of all all is the code you don't have to write in the first place. Кроме того, как отметил выше Bbum, работа в GC означает, что у вас есть гораздо больше информации для анализа производительности, если вам нужно отладить какие-либо узкие места.

.
3
ответ дан 6 December 2019 в 05:48
поделиться

Сбор мусора рекомендуется для любых новых применений какао, и Apple ест собственный корм для собак, используя его в Xcode. Производительность - интересная ситуация, поскольку, хотя в целом вы, скорее всего, будете потреблять больше процессорных циклов, на самом деле в некоторых областях приложение может работать быстрее за счет многопоточности коллектора и упрощения методов доступа.

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

1
ответ дан 6 December 2019 в 05:48
поделиться

Как и другие, я бы настоятельно рекомендовал использовать ГХ. Обычно накладные расходы на производительность ничтожно малы! Мне не нужно повторять преимущества, о которых говорили другие пользователи.

Однако, я бы настоятельно рекомендовал писать библиотеки, в отличие от приложений, и работать в режиме, отличном от GC. Некоторые среды не могут запускать GC-код, примечателен iPhone; поэтому если вы создали внутреннюю библиотеку для себя, что вы предполагаете использовать ее позже для приложения iPhone, то я бы порекомендовал спроектировать ее так, чтобы она работала и в среде, отличной от GC.

Преобразование GC-кода в не-GC-код намного сложнее, чем наоборот!

.
1
ответ дан 6 December 2019 в 05:48
поделиться

Сбор мусора существует с 1960-х годов и используется во многих выпущенных приложениях. Все .NET приложения используют сбор мусора. Apple использует libauto в Xcode.

Сборка мусора обычно приводит к улучшению качества приложений в Cocoa, так как разработчик освобождается от бремени управления памятью. Есть тонны Cocoa приложений, которые утечка! (хотя это может быть и не значительный объем памяти)

Я склонен использовать gc, так как я могу быстрее разворачивать свои приложения и не беспокоиться о сообщениях зомби-объектов!

.
5
ответ дан 6 December 2019 в 05:48
поделиться