Когда и где я должен слить NSAutoreleasePool? - PullRequest
0 голосов
/ 20 марта 2012

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

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

Ответы [ 3 ]

2 голосов
/ 20 марта 2012

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

Подробнее о пуле авто-релиза в https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmAutoreleasePools.html

1 голос
/ 20 марта 2012

Единственное время, когда вам нужно вручную управлять объектами NSAutoreleasePool, - это когда вы работаете в потоке.Если поток не использует много памяти, истощите в начале и истощите в конце.В противном случае истощите все итерации цикла.Сколько итераций между сливом пула зависит от объема памяти, который вы используете в пуле.Чем чаще вы истощаете, тем эффективнее используется ваша память.

Если вы делаете это для чего-то вроде системы частиц с десятками тысяч частиц, то вам лучше не выделять и не освобождать память все времяно вместо этого выделите один раз и используйте кольцевой буфер или что-то подобное.

1 голос
/ 20 марта 2012

Пул авторелизов в main выполняет ответственность ваших приложений перед Какао за то, что пул авторелизов всегда будет доступен.Этот пул сливается на каждом цикле цикла основного события.

Кроме того, каждый создаваемый вами NSThread должен иметь свой собственный пул автоматического выпуска.

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

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