cleanup: use current_memsize instead of counting cache sizes

chrox 12 years ago
parent 328a1a853f
commit 10b4804d2e

@ -1063,13 +1063,11 @@ function UniReader:cacheClaim(size)
return false
end
-- reduce ttl of each cache
local calculated_size = 0
for k, _ in pairs(self.cache) do
self.cache[k].ttl = self.cache[k].ttl - 1
calculated_size = calculated_size + self.cache[k].size
end
-- free oldest cache until we have free memory
while calculated_size + size > self.cache_max_memsize do
while self.cache_current_memsize + size > self.cache_max_memsize do
local oldest_cache_ttl = self.cache_max_ttl
local oldest_cache_key = nil
for k, _ in pairs(self.cache) do
@ -1081,12 +1079,12 @@ function UniReader:cacheClaim(size)
-- cache slot is at end of life, so kick it out
if oldest_cache_key then
Debug("free cache:", oldest_cache_key, "ttl:", self.cache[oldest_cache_key].ttl)
calculated_size = calculated_size - self.cache[oldest_cache_key].size
self.cache_current_memsize = self.cache_current_memsize - self.cache[oldest_cache_key].size
self.cache[oldest_cache_key].bb:free()
self.cache[oldest_cache_key] = nil
end
end
self.cache_current_memsize = calculated_size + size
self.cache_current_memsize = self.cache_current_memsize + size
return true
end

Loading…
Cancel
Save