spring-cloud-netflix-coreライブラリを使用している状況があります。このライブラリはhereと記載されています。問題は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
)で一度再現することができました。しかし、このようなシナリオをカバーするために、どのように単体テストを書くことができますか?