사용자 도구

사이트 도구


java:caffeine

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:caffeine [2024/02/08 09:06]
kwon37xi
java:caffeine [2024/02/08 09:08] (현재)
kwon37xi
줄 7: 줄 7:
   * [[https://github.com/ben-manes/caffeine/wiki/Eviction|Eviction · ben-manes/caffeine Wiki]]   * [[https://github.com/ben-manes/caffeine/wiki/Eviction|Eviction · ben-manes/caffeine Wiki]]
 ==== weakKeys() / weakValues() ==== ==== weakKeys() / weakValues() ====
-  * ''weakKeys()'' / ''weakValues()''  설정을 사용하면 캐시 Key 가 ''Weak Reference''로 저장되고, 객체 reference가 없으면 JVM GC 대상으로 지정되게 된다.+  * ''weakKeys()'' / ''weakValues()''  설정을 사용하면 캐시 Key와 value가 ''Weak Reference''로 저장되고, 객체 reference가 없으면 JVM GC 대상으로 지정되게 된다.
   * 이 경우 key 와 value 모두가 GC 대상이다.   * 이 경우 key 와 value 모두가 GC 대상이다.
   * 그러나 **Key 를 비교할 때 ''equals()'' 메소드가 아니고 identity 비교(''=='')를 하게 된다.**   * 그러나 **Key 를 비교할 때 ''equals()'' 메소드가 아니고 identity 비교(''=='')를 하게 된다.**
   * 이는 Key 역할을 하는 객체가 값이 같아도 reference 가 다르면 다른것으로 인식하게 되어 cache hit 가 안됨을 뜻한다.   * 이는 Key 역할을 하는 객체가 값이 같아도 reference 가 다르면 다른것으로 인식하게 되어 cache hit 가 안됨을 뜻한다.
 +  * ''AsyncCache'' 에서 **사용불가**
 +
 +<code java>
 +LoadingCache<Key, Graph> graphs = Caffeine.newBuilder()
 +    .weakKeys()
 +    .weakValues()
 +    .build(key -> createExpensiveGraph(key));
 +</code>
  
 <note warning> <note warning>
줄 17: 줄 25:
  
 ==== softValues() ==== ==== softValues() ====
 +<code java>
 +LoadingCache<Key, Graph> graphs = Caffeine.newBuilder()
 +    .softValues()
 +    .build(key -> createExpensiveGraph(key));
 +</code>
 +
   * 캐시의 value ''SoftReference''로 GC 대상이 된다.   * 캐시의 value ''SoftReference''로 GC 대상이 된다.
   * 값의 비교도 identity 비교(''=='') 를 사용한다.   * 값의 비교도 identity 비교(''=='') 를 사용한다.
   * 단, 문서에서는 ''SoftReference'' 가 JVM에서 메모리 상황에 따라 least-recently-used 방식으로 GC 대상으로 지정된다. ''SoftReference''는 성능에 영향을 줄 수 있어서 명시적으로 캐시 사이즈를 지정하는 것을 권장한다.   * 단, 문서에서는 ''SoftReference'' 가 JVM에서 메모리 상황에 따라 least-recently-used 방식으로 GC 대상으로 지정된다. ''SoftReference''는 성능에 영향을 줄 수 있어서 명시적으로 캐시 사이즈를 지정하는 것을 권장한다.
 +  * ''AsyncCache'' 에서 **사용불가**
java/caffeine.1707350811.txt.gz · 마지막으로 수정됨: 2024/02/08 09:06 저자 kwon37xi