1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.linecorp.centraldogma.server.internal.storage.repository.git;
18
19 import java.util.LinkedHashMap;
20 import java.util.Map;
21
22 final class LruMap<K, V> extends LinkedHashMap<K, V> {
23
24 private static final long serialVersionUID = 8533922512014170929L;
25
26 static <K, V> ThreadLocal<LruMap<K, V>> newThreadLocal(int maxEntries) {
27 return ThreadLocal.withInitial(() -> new LruMap<>(maxEntries));
28 }
29
30 private final int maxEntries;
31
32 private LruMap(int maxEntries) {
33 super(maxEntries, 0.75f, true);
34 this.maxEntries = maxEntries;
35 }
36
37 @Override
38 protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
39 return size() > maxEntries;
40 }
41 }