From ddbbc61339fe76f5f2bbffae752cef322d304d52 Mon Sep 17 00:00:00 2001 From: guoling Date: Wed, 21 Nov 2018 10:59:48 +0800 Subject: [PATCH] use average item size to calc future usage --- Android/MMKV/mmkv/src/main/cpp/MMKV.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Android/MMKV/mmkv/src/main/cpp/MMKV.cpp b/Android/MMKV/mmkv/src/main/cpp/MMKV.cpp index 6c0a48af..2e03f57c 100644 --- a/Android/MMKV/mmkv/src/main/cpp/MMKV.cpp +++ b/Android/MMKV/mmkv/src/main/cpp/MMKV.cpp @@ -660,7 +660,8 @@ bool MMKV::ensureMemorySize(size_t newSize) { return false; } } else { - size_t futureUsage = newSize * std::max(8, (m_dic.size() + 1) / 2); + size_t avgItemSize = lenNeeded / m_dic.size(); + size_t futureUsage = avgItemSize * std::max(8, (m_dic.size() + 1) / 2); // 1. no space for a full rewrite, double it // 2. or space is not large enough for future usage, double it to avoid frequently full rewrite if (lenNeeded >= m_size || (lenNeeded + futureUsage) >= m_size) {