unilink  0.4.3
A simple C++ library for unified async communication
unilink::memory::MemoryPool Class Reference

Selective simplified memory pool with optimized performance. More...

#include <memory_pool.hpp>

Classes

struct  HealthMetrics
 
struct  PoolStats
 

Public Types

enum class  BufferSize : size_t { SMALL = 1024 , MEDIUM = 4096 , LARGE = 16384 , XLARGE = 65536 }
 

Public Member Functions

 MemoryPool (size_t initial_pool_size=400, size_t max_pool_size=2000)
 
 ~MemoryPool ()=default
 
 MemoryPool (const MemoryPool &)=delete
 
MemoryPooloperator= (const MemoryPool &)=delete
 
 MemoryPool (MemoryPool &&)=delete
 
MemoryPooloperator= (MemoryPool &&)=delete
 
std::unique_ptr< uint8_t[]> acquire (size_t size)
 
std::unique_ptr< uint8_t[]> acquire (BufferSize buffer_size)
 
void release (std::unique_ptr< uint8_t[]> buffer, size_t size)
 
PoolStats get_stats () const
 
double get_hit_rate () const
 
void cleanup_old_buffers (std::chrono::milliseconds max_age=std::chrono::minutes(5))
 
std::pair< size_t, size_t > get_memory_usage () const
 
void resize_pool (size_t new_size)
 
void auto_tune ()
 
HealthMetrics get_health_metrics () const
 

Detailed Description

Selective simplified memory pool with optimized performance.

Core design principles:

  • Small pools: Lock-based (fast allocation, low overhead)
  • Large pools: Lock-free (high concurrency)
  • Memory alignment: 64-byte alignment for buffers >= 4KB
  • Minimal statistics: Basic stats only to minimize overhead

Definition at line 43 of file memory_pool.hpp.

Member Enumeration Documentation

◆ BufferSize

Enumerator
SMALL 
MEDIUM 
LARGE 
XLARGE 

Definition at line 57 of file memory_pool.hpp.

Constructor & Destructor Documentation

◆ MemoryPool() [1/3]

unilink::memory::MemoryPool::MemoryPool ( size_t  initial_pool_size = 400,
size_t  max_pool_size = 2000 
)
explicit

Definition at line 32 of file memory_pool.cc.

◆ ~MemoryPool()

unilink::memory::MemoryPool::~MemoryPool ( )
default

◆ MemoryPool() [2/3]

unilink::memory::MemoryPool::MemoryPool ( const MemoryPool )
delete

◆ MemoryPool() [3/3]

unilink::memory::MemoryPool::MemoryPool ( MemoryPool &&  )
delete

Member Function Documentation

◆ acquire() [1/2]

std::unique_ptr< uint8_t[]> unilink::memory::MemoryPool::acquire ( BufferSize  buffer_size)

Definition at line 67 of file memory_pool.cc.

◆ acquire() [2/2]

std::unique_ptr< uint8_t[]> unilink::memory::MemoryPool::acquire ( size_t  size)

Definition at line 51 of file memory_pool.cc.

◆ auto_tune()

void unilink::memory::MemoryPool::auto_tune ( )

Definition at line 117 of file memory_pool.cc.

◆ cleanup_old_buffers()

void unilink::memory::MemoryPool::cleanup_old_buffers ( std::chrono::milliseconds  max_age = std::chrono::minutes(5))

Definition at line 100 of file memory_pool.cc.

◆ get_health_metrics()

MemoryPool::HealthMetrics unilink::memory::MemoryPool::get_health_metrics ( ) const

Definition at line 121 of file memory_pool.cc.

◆ get_hit_rate()

double unilink::memory::MemoryPool::get_hit_rate ( ) const

Definition at line 92 of file memory_pool.cc.

◆ get_memory_usage()

std::pair< size_t, size_t > unilink::memory::MemoryPool::get_memory_usage ( ) const

Definition at line 105 of file memory_pool.cc.

◆ get_stats()

MemoryPool::PoolStats unilink::memory::MemoryPool::get_stats ( ) const

Definition at line 85 of file memory_pool.cc.

◆ operator=() [1/2]

MemoryPool& unilink::memory::MemoryPool::operator= ( const MemoryPool )
delete

◆ operator=() [2/2]

MemoryPool& unilink::memory::MemoryPool::operator= ( MemoryPool &&  )
delete

◆ release()

void unilink::memory::MemoryPool::release ( std::unique_ptr< uint8_t[]>  buffer,
size_t  size 
)

Definition at line 71 of file memory_pool.cc.

◆ resize_pool()

void unilink::memory::MemoryPool::resize_pool ( size_t  new_size)

Definition at line 112 of file memory_pool.cc.


The documentation for this class was generated from the following files: