diff options
Diffstat (limited to 'runtime/base/arena_allocator.cc')
| -rw-r--r-- | runtime/base/arena_allocator.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/runtime/base/arena_allocator.cc b/runtime/base/arena_allocator.cc index 771b2d0509..a4b38ea963 100644 --- a/runtime/base/arena_allocator.cc +++ b/runtime/base/arena_allocator.cc @@ -222,6 +222,10 @@ ArenaPool::ArenaPool(bool use_malloc, bool low_4gb) } ArenaPool::~ArenaPool() { + ReclaimMemory(); +} + +void ArenaPool::ReclaimMemory() { while (free_arenas_ != nullptr) { auto* arena = free_arenas_; free_arenas_ = free_arenas_->next_; @@ -229,6 +233,11 @@ ArenaPool::~ArenaPool() { } } +void ArenaPool::LockReclaimMemory() { + MutexLock lock(Thread::Current(), lock_); + ReclaimMemory(); +} + Arena* ArenaPool::AllocArena(size_t size) { Thread* self = Thread::Current(); Arena* ret = nullptr; |