1
private Cache<Object, String> cache = CacheBuilder.newBuilder()
.concurrencyLevel(4)
.expireAfterAccess(24, TimeUnit.HOURS)
.initialCapacity(1024)
.maximumSize(1_00_000)
.build();
private ConcurrentMap<Object, String> cacheMap = cache.asMap();
이것은 내 코드입니다. 간단하며 단지 구아바 맵 캐시를 만드는 것입니다. 질문 :이지도에서 키를 제거하면 GC가이지도에서 메모리를 회수 할 수 있습니까? weakReference를 사용하지 않고 (Set 나 Map 등의 네스트 오브젝트를 저장하지 않는다.)?키를 제거하면 구아바 맵 캐시가 줄어 듭니다.
감사합니다. 그러나 invalidate()는 내가 물어 본 질문이 아닌 축출 기능입니다. 내가 커버 아래에 알고 싶었어요, 구아바 캐시의 implRes는 arrayRef의 크기를 객체로 축소합니다. – linehrr
@linehrr [예, 소스 코드에 따라] (https://github.com/google/guava/blob/master/guava/src/com/google/common/cache/LocalCache.java) :'LocalManualCache'가 반환됩니다. asMap을 통해 내부 ConcurrentMap이다. 따라서 기본지도가 실제로 축소되었습니다. –