Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка CMMemoryPool

Опции
Развертывание Target:

На этой странице
Язык:

Ссылка 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() -> CFTypeID

    Objective C

    CFTypeID CMMemoryPoolGetTypeID ( void );

    Возвращаемое значение

    Значение типа CFTypeID это идентифицирует непрозрачный тип CMMemoryPool.

    Оператор импорта

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.8 и позже.

Типы данных

  • Ссылка на a CMMemoryPool объект.

    Объявление

    Swift

    typealias CMMemoryPoolRef = CMMemoryPool

    Objective 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

    Константы

    • kCMMemoryPoolOption_AgeOutPeriod

      kCMMemoryPoolOption_AgeOutPeriod

      Указывает, сколько времени памяти нужно позволить болтаться в пуле прежде чем быть освобожденным. Значение является a CFNumber.

      Доступный в OS X v10.8 и позже.