Кевин и ответ Робин является наиболее точным. Ответ Оскара довольно близок к правильному. Но ни документация Gnustep, ни причины logancautrell для существования зон совершенно верны.
Зоны были первоначально созданы - сначала NXZone, затем NSZone - чтобы объекты, выделенные из одной зоны, были относительно смежными в памяти, это правда. Как оказалось, это не уменьшает объем памяти, которую использует приложение; в большинстве случаев это немного увеличивает его.
Большая цель состояла в том, чтобы иметь возможность массово уничтожать множество объектов.
Например, если вы должны были загрузить сложный документ в приложение на основе документа, срыв графа объекта при закрытии документа может быть довольно значительным.
Таким образом, если все объекты для документа были выделены из одной зоны и метаданных выделения для этой зоны был также в этой зоне, а затем уничтожение всех объектов, связанных с документом будет дешевле, чем просто разрушая зону (которая была действительно дешевой - «здесь, система, верните эти страницы» - один вызов функции).
Это оказалось неработоспособным. Если одна ссылка на объект в зоне просочилась из зоны, тогда ваше приложение отправит BOOM, как только документ будет закрыт, и не было никакого способа, чтобы объект мог сказать, что ссылается на него, чтобы остановить. Во-вторых, эта модель также стала жертвой проблемы с дефицитом ресурсов, которая часто встречается в системе GC'd. То есть, если графический объект документа хранится на ресурсах без памяти, не было возможности эффективно очищать указанные ресурсы до разрушения зоны.
В конце концов, сочетание из почти не превышающего выигрыш в производительности (как часто вы действительно закрываете сложные документы) со всей добавленной хрупкостью создало зоны плохой идеей. Слишком поздно менять API-интерфейсы, и мы остаемся с остатками.
Удивительно, я надеялся, что вы ответите на это. Замечание, было ли это документировано в документах Apple в любой момент? Все, что я могу найти сегодня, это методы основания NSZone *. – logancautrell
Не стесняйтесь @bbum меня в Twitter, если есть такие вопросы, которые вы хотели бы привлечь к моему вниманию. Эволюция языка (и ОС) на самом деле увлекательна. Если это когда-либо было задокументировано, это, вероятно, оставалось в течение дней Rhapsody. Я не думаю, что зоны были рекомендованы в соответствующих версиях Mac OS X. – bbum
Я ценю, что ваши сообщения высоко ценятся из-за вашего уникального положения и истории. Я бы хотел, чтобы инженеры Apple провели здесь время! – logancautrell