commit 37189355ecc35635266b246e9ba67e6a2544a9fc
parent a0b293e34d9651ebf55f4479ebc94c7de999f68b
Author: Randell Jesup <rjesup@mozilla.com>
Date: Fri, 24 Oct 2025 18:00:04 +0000
Bug 1996298: PurgeByFrecency was over-purging due to holding references r=jstutte
Differential Revision: https://phabricator.services.mozilla.com/D270001
Diffstat:
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/netwerk/cache2/CacheStorageService.cpp b/netwerk/cache2/CacheStorageService.cpp
@@ -1510,7 +1510,8 @@ Result<size_t, nsresult> CacheStorageService::MemoryPool::PurgeByFrecency(
} else {
if (entry->GetEnhanceID().EqualsLiteral("dict:")) {
LOG(
- ("*** Entry is a dictionary origin, metadata size %d, referenced "
+ ("*** Ignored Entry is a dictionary origin, metadata size %d, "
+ "referenced "
"%d, Frecency %f",
entry->GetMetadataMemoryConsumption(), entry->IsReferenced(),
entry->GetFrecency()));
@@ -1530,7 +1531,9 @@ Result<size_t, nsresult> CacheStorageService::MemoryPool::PurgeByFrecency(
break;
}
- RefPtr<CacheEntry> entry = checkPurge.mEntry;
+ // Ensure it's deleted immediately if purged so we can record the
+ // mMemorySize savings
+ RefPtr<CacheEntry> entry = std::move(checkPurge.mEntry);
if (entry->Purge(CacheEntry::PURGE_WHOLE)) {
numPurged++;
@@ -1544,7 +1547,10 @@ Result<size_t, nsresult> CacheStorageService::MemoryPool::PurgeByFrecency(
}
}
- LOG(("MemoryPool::PurgeByFrecency done"));
+ LOG(
+ ("MemoryPool::PurgeByFrecency done, purged %zu - mMemorySize %u, "
+ "memoryLimit %u",
+ numPurged, (uint32_t)mMemorySize, memoryLimit));
return numPurged;
}