LWPool Node1 LWPool - m_chunksize - m_growsize - m_nchunksPerArea + LWPool() + ~LWPool() + acquire() + acquireClean() + release() + erase() + getMemDishedOut() + getMemOwned() + getMotherMemOwned() + forceCleanupMotherPool() - LWPool() - operator=() - grow() - freeArea() - growSize() - chunkSize() - init() - belongsInArea() - searchAcquire() - findArea() - isMotherPool() - LWPool() - getMotherPool() Node2 std::vector< LWPoolArea * > Node2->Node1 -m_areas Node3 LWPoolArea - m_chunksize - m_nchunks - m_area + acquire() + release() + isUnused() + getMemDishedOut() + getMemUnusedButAllocated() + belongsInArea() + totalNumberOfChunks() + create() - LWPoolArea() - operator=() - LWPoolArea() - ~LWPoolArea() - calcNChunks() Node3->Node1 -m_likelyNonEmptyArea -m_likelyReleaseArea Node3->Node2 +elements Node4 LWPoolAreaBookKeeper - m_nEntries - m_nFields - m_nonEmptyField - m_nUnusedEntries + nBytesCovered() + acquireEntry() + returnEntry() + isCompletelyFull() + isCompletelyEmpty() + numberOfAvailableEntries() + numberOfEntriesHandedOut() + nBytesNeededForCreate() + create() - LWPoolAreaBookKeeper() - ~LWPoolAreaBookKeeper() - LWPoolAreaBookKeeper() - operator=() - findNewNonEmptyField() - nFields() Node4->Node3 -m_bookkeep Node5 std::mutex Node5->Node1 -m_mutex