Ссылка CMMemoryPool
Когда большие блоки памяти должны неоднократно выделяться, освобождаться, затем перераспределяться, этот документ описывает API, используемый для оптимизации выделения памяти.
CMMemoryPool является службой выделения памяти, содержащей на пул недавно освобожденной памяти. Это - цель, должен ускорить последующие выделения того же размера. Этот API предназначается для случаев, где должны неоднократно выделяться блоки памяти большой емкости. Одним примером было бы приложение кодирования видео, какие выводы сжали данные.
Все его выделения находятся на гранулярности размеров страницы. Это не делает sub, выделяют память в страницах, таким образом, это - плохой выбор для выделения крошечных блоков. Например, является надлежащим использовать CMMemoryPool как blockAllocator параметр в CMBlockBufferCreateWithMemoryBlock метод, но не как structureAllocator параметр, использовать kCFAllocatorDefault вместо этого.
Когда Вы больше не должны будете выделять память от пула, вызвать CMMemoryPoolInvalidate и CFRelease. Вызов CMMemoryPoolInvalidate говорит пулу прекращать содержать на память для повторного использования. Обратите внимание на то, что пул CFAllocator может пережить пул, вследствие способа, которым разработан CoreFoundation: CFAllocators самостоятельно объекты CF и каждый объект, выделенный с a CFAllocator неявно сохраняет CFAllocator пока это не завершено. После CMMemoryPool лишен законной силы или завершен, CFAllocator выделяет и освобождает без объединения поведения.
CMMemoryPool освобождает память, если она не была переработана за 0,5 секунды, так, чтобы краткосрочное пиковое использование не вызывало персистентное чрезмерное увеличение размера (Этот период может быть переопределен путем указания kCMMemoryPoolOption_AgeOutPeriod). Такое «старение» сделано во время пула CFAllocatorAllocate и CFAllocatorDeallocate методы.
-
Создает новое
CMMemoryPool.Объявление
Swift
func CMMemoryPoolCreate(_options: CFDictionary!) -> Unmanaged<CMMemoryPool>!Objective C
CMMemoryPoolRef CMMemoryPoolCreate ( CFDictionaryRef options );Параметры
optionsБазовый словарь Основы, содержащий опции, которые будут использоваться для создания нового
CMMemoryPool.Возвращаемое значение
Ссылка на недавно создаваемый
CMMemoryPoolОбъект.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.8 и позже.
-
Возвращает пул
CFAllocator.Объявление
Swift
func CMMemoryPoolGetAllocator(_pool: CMMemoryPool!) -> Unmanaged<CFAllocator>!Objective C
CFAllocatorRef CMMemoryPoolGetAllocator ( CMMemoryPoolRef pool );Параметры
poolПул памяти, средство выделения которого определяется.
Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.8 и позже.
-
Освобождает всю память, которую пул содержал для переработки.
Объявление
Swift
func CMMemoryPoolFlush(_pool: CMMemoryPool!)Objective C
void CMMemoryPoolFlush ( CMMemoryPoolRef pool );Параметры
poolПул, содержащий память, которая будет выпущена.
Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.8 и позже.
-
Когда
CMMemoryPoolInvalidateвызывается средство выделения пула прекращает перерабатывать память.Объявление
Swift
func CMMemoryPoolInvalidate(_pool: CMMemoryPool!)Objective C
void CMMemoryPoolInvalidate ( CMMemoryPoolRef pool );Обсуждение
Когда этот метод вызывают, пул освобождает любую память, которую это содержало для переработки. Освобождение также происходит когда сохранить количество
CMMemoryPoolопускается до нуля, хотя под GC может быть задержано освобождение.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.8 и позже.
-
Возвращает уникальный идентификатор непрозрачного типа к который
CMMemoryPoolобъект принадлежит.Объявление
Swift
func CMMemoryPoolGetTypeID() -> CFTypeIDObjective C
CFTypeID CMMemoryPoolGetTypeID ( void );Возвращаемое значение
Значение типа
CFTypeIDэто идентифицирует непрозрачный типCMMemoryPool.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.8 и позже.
-
Ссылка на a
CMMemoryPoolобъект.Объявление
Swift
typealias CMMemoryPoolRef = CMMemoryPoolObjective C
typedef struct OpaqueCMMemoryPool *CMMemoryPoolRefОператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.8 и позже.
-
Вы указываете этот ключ в Базовом словаре Основы при вызывании функций такой как
CMMemoryPoolCreate.Объявление
Swift
let kCMMemoryPoolOption_AgeOutPeriod: CFString!Objective C
const CFStringRef kCMMemoryPoolOption_AgeOutPeriodКонстанты
