mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-08-18 06:27:01 +00:00
perf[cache]: limit check cache size time
This commit is contained in:
@@ -133,19 +133,18 @@ public class LazyCache<K, V> {
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
private void checkMaximumSize() {
|
||||
if (cacheMap.size() < backPressureSize) {
|
||||
return;
|
||||
}
|
||||
var now = TimeUtils.now();
|
||||
var sizeCheckTime = sizeCheckTimeAtomic.get();
|
||||
if (now > sizeCheckTime) {
|
||||
if (sizeCheckTimeAtomic.compareAndSet(sizeCheckTime, now + MILLIS_MAX_SIZE_CHECK_INTERVAL)) {
|
||||
var exceedList = cacheMap.entrySet()
|
||||
.stream()
|
||||
.sorted((a, b) -> Long.compare(a.getValue().expireTime, b.getValue().expireTime))
|
||||
.limit(Math.max(0, cacheMap.size() - maximumSize))
|
||||
.toList();
|
||||
exceedList.forEach(it -> removeForCause(it.getKey(), RemovalCause.SIZE));
|
||||
if (cacheMap.size() > backPressureSize) {
|
||||
var now = TimeUtils.now();
|
||||
var sizeCheckTime = sizeCheckTimeAtomic.get();
|
||||
if (now > sizeCheckTime) {
|
||||
if (sizeCheckTimeAtomic.compareAndSet(sizeCheckTime, now + MILLIS_MAX_SIZE_CHECK_INTERVAL)) {
|
||||
var exceedList = cacheMap.entrySet()
|
||||
.stream()
|
||||
.sorted((a, b) -> Long.compare(a.getValue().expireTime, b.getValue().expireTime))
|
||||
.limit(Math.max(0, cacheMap.size() - maximumSize))
|
||||
.toList();
|
||||
exceedList.forEach(it -> removeForCause(it.getKey(), RemovalCause.SIZE));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user