diff --git a/src/memory.cpp b/src/memory.cpp index cd75a9bc..7677ba81 100644 --- a/src/memory.cpp +++ b/src/memory.cpp @@ -124,6 +124,8 @@ struct DoubleLinkedList{ template struct MemoryPool{ static const size_t __MaxBlocks = 256*1024 / __BlockSize; + static const size_t __MinArenaCount = PK_GC_MIN_THRESHOLD*100 / (256*1024); + struct Block{ void* arena; char data[__BlockSize]; @@ -224,6 +226,7 @@ struct MemoryPool{ void shrink_to_fit(){ PK_GLOBAL_SCOPE_LOCK(); + if(_arenas.size() < __MinArenaCount) return; _arenas.apply([this](Arena* arena){ if(arena->full()){ _arenas.erase(arena);