우리는 here으로 묘사 된 spring-cloud-netflix-core 라이브러리를 사용하는 상황이 있습니다. 문제는 CachingSpringLoadBalancerFactory
이 ConcurrentReferenceHashMap
이고 here이보고 된 것과 같습니다.
또한 (소프트 참조를 사용) ConcurrentReferenceHashMap
의 문서에서 :ConcurrentReferenceHashMap은 어떻게 작동합니까?
참조의 사용은 맵에 배치 항목을 연속적으로 사용할 수 있습니다 보장이 없다는 것을 의미한다. 가비지 컬렉터는 언제든지 참조를 삭제할 수 있으므로 알 수없는 스레드가 자동으로 항목을 제거하는 것처럼 보일 수 있습니다.
내 질문은 다음과 같습니다.
1. 다음 사항에 대한 올바른 이해가 있습니까?
// Original code is in CachingSpringLoadBalancerFactory in spring-cloud-netflix-core
// cache is a field of type ConcurrentReferenceHashMap
if (this.cache.containsKey(clientName)) {
return this.cache.get(clientName); // This can be null, right?
}
2. 그것에 대한 테스트 케이스를 작성 어쨌든입니다. 제한된 메모리 (-Xmx50m
)를 사용하는 독립 실행 형 응용 프로그램에서 한 번 재생했습니다. 그런 시나리오를 다루기 위해 어떻게 단위 테스트를 작성할 수 있습니까?