pub struct CMMemoryPool { /* private fields */ }CMMemoryPool only.Expand description
CMMemoryPool.h
Memory pool for optimizing repeated large block allocation.
CMMemoryPool is a memory allocation service that holds onto a pool of recently deallocated memory so as to speed up subsequent allocations of the same size. It’s intended for cases where large memory blocks need to be repeatedly allocated – for example, the compressed data output by a video encoder.
All of its allocations are on the granularity of page sizes; it does not suballocate memory within pages, so it is a poor choice for allocating tiny blocks. For example, it’s appropriate to use as the blockAllocator argument to CMBlockBufferCreateWithMemoryBlock, but not the structureAllocator argument – use kCFAllocatorDefault instead.
When you no longer need to allocate memory from the pool, call CMMemoryPoolInvalidate and CFRelease. Calling CMMemoryPoolInvalidate tells the pool to stop holding onto memory for reuse. Note that the pool’s CFAllocator can outlive the pool, owing to the way that CoreFoundation is designed: CFAllocators are themselves CF objects, and every object allocated with a CFAllocator implicitly retains the CFAllocator until it is finalized. After the CMMemoryPool is invalidated or finalized, its CFAllocator allocates and deallocates with no pooling behavior.
CMMemoryPool deallocates memory if it has not been recycled in 0.5 second, so that short-term peak usage does not cause persistent bloat. (This period may be overridden by specifying kCMMemoryPoolOption_AgeOutPeriod.) Such “aging out” is done during the pool’s CFAllocatorAllocate and CFAllocatorDeallocate methods.
See also Apple’s documentation
Implementations§
Source§impl CMMemoryPool
impl CMMemoryPool
Sourcepub unsafe fn new(options: Option<&CFDictionary>) -> CFRetained<CMMemoryPool>
pub unsafe fn new(options: Option<&CFDictionary>) -> CFRetained<CMMemoryPool>
Sourcepub unsafe fn allocator(&self) -> CFRetained<CFAllocator>
pub unsafe fn allocator(&self) -> CFRetained<CFAllocator>
Returns the pool’s CFAllocator.
Sourcepub unsafe fn invalidate(&self)
pub unsafe fn invalidate(&self)
Stops the pool from recycling.
When CMMemoryPoolInvalidate is called the pool’s allocator stops recycling memory. The pool deallocates any memory it was holding for recycling. This also happens when the retain count of the CMMemoryPool drops to zero, except that under GC it may be delayed.
Methods from Deref<Target = CFType>§
Sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: ConcreteType,
Available on crate feature CMAttachment only.
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: ConcreteType,
CMAttachment only.Attempt to downcast the type to that of type T.
This is the reference-variant. Use CFRetained::downcast if you
want to convert a retained type. See also ConcreteType for more
details on which types support being converted to.
Sourcepub fn retain_count(&self) -> usize
Available on crate feature CMAttachment only.
pub fn retain_count(&self) -> usize
CMAttachment only.Get the reference count of the object.
This function may be useful for debugging. You normally do not use this function otherwise.
Beware that some things (like CFNumbers, small CFStrings etc.) may
not have a normal retain count for optimization purposes, and can
return usize::MAX in that case.
Trait Implementations§
Source§impl AsRef<AnyObject> for CMMemoryPool
impl AsRef<AnyObject> for CMMemoryPool
Source§impl AsRef<CFType> for CMMemoryPool
impl AsRef<CFType> for CMMemoryPool
Source§impl AsRef<CMMemoryPool> for CMMemoryPool
impl AsRef<CMMemoryPool> for CMMemoryPool
Source§impl Borrow<AnyObject> for CMMemoryPool
impl Borrow<AnyObject> for CMMemoryPool
Source§impl Borrow<CFType> for CMMemoryPool
impl Borrow<CFType> for CMMemoryPool
Source§impl ConcreteType for CMMemoryPool
impl ConcreteType for CMMemoryPool
Source§impl Debug for CMMemoryPool
impl Debug for CMMemoryPool
Source§impl Deref for CMMemoryPool
impl Deref for CMMemoryPool
Source§impl Hash for CMMemoryPool
impl Hash for CMMemoryPool
Source§impl Message for CMMemoryPool
impl Message for CMMemoryPool
Source§impl PartialEq for CMMemoryPool
impl PartialEq for CMMemoryPool
Source§impl RefEncode for CMMemoryPool
impl RefEncode for CMMemoryPool
Source§const ENCODING_REF: Encoding
const ENCODING_REF: Encoding
Source§impl Type for CMMemoryPool
impl Type for CMMemoryPool
Source§fn retain(&self) -> CFRetained<Self>where
Self: Sized,
fn retain(&self) -> CFRetained<Self>where
Self: Sized,
Source§fn as_concrete_TypeRef(&self) -> &Self
fn as_concrete_TypeRef(&self) -> &Self
core-foundation crate.Source§unsafe fn wrap_under_get_rule(ptr: *const Self) -> CFRetained<Self>where
Self: Sized,
unsafe fn wrap_under_get_rule(ptr: *const Self) -> CFRetained<Self>where
Self: Sized,
core-foundation crate. Read moreSource§fn as_CFTypeRef(&self) -> &CFType
fn as_CFTypeRef(&self) -> &CFType
core-foundation crate.Source§unsafe fn wrap_under_create_rule(ptr: *const Self) -> CFRetained<Self>where
Self: Sized,
unsafe fn wrap_under_create_rule(ptr: *const Self) -> CFRetained<Self>where
Self: Sized,
core-foundation crate. Read more