Use WeakKeySoftValueMap in ResolveElementCache
Otherwise results are effectively retained in the maps until we're close to OutOfMemory. While we mostly need them for a short time (especially in the case we run resolution during usages search). The possible problem is that the values may become too short-living, but now using these maps is a conventional solution for similar tasks in Java resolve
This commit is contained in:
@@ -77,7 +77,7 @@ class ResolveElementCache(
|
|||||||
CachedValuesManager.getManager(project).createCachedValue(
|
CachedValuesManager.getManager(project).createCachedValue(
|
||||||
CachedValueProvider<MutableMap<KtElement, ResolveElementCache.CachedFullResolve>> {
|
CachedValueProvider<MutableMap<KtElement, ResolveElementCache.CachedFullResolve>> {
|
||||||
CachedValueProvider.Result.create(
|
CachedValueProvider.Result.create(
|
||||||
ContainerUtil.createConcurrentSoftValueMap<KtElement, CachedFullResolve>(),
|
ContainerUtil.createConcurrentWeakKeySoftValueMap<KtElement, CachedFullResolve>(),
|
||||||
PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT,
|
PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT,
|
||||||
resolveSession.exceptionTracker
|
resolveSession.exceptionTracker
|
||||||
)
|
)
|
||||||
@@ -103,7 +103,7 @@ class ResolveElementCache(
|
|||||||
CachedValuesManager.getManager(project).createCachedValue(
|
CachedValuesManager.getManager(project).createCachedValue(
|
||||||
CachedValueProvider<MutableMap<KtExpression, ResolveElementCache.CachedPartialResolve>> {
|
CachedValueProvider<MutableMap<KtExpression, ResolveElementCache.CachedPartialResolve>> {
|
||||||
CachedValueProvider.Result.create(
|
CachedValueProvider.Result.create(
|
||||||
ContainerUtil.createConcurrentSoftValueMap<KtExpression, CachedPartialResolve>(),
|
ContainerUtil.createConcurrentWeakKeySoftValueMap<KtExpression, CachedPartialResolve>(),
|
||||||
PsiModificationTracker.MODIFICATION_COUNT,
|
PsiModificationTracker.MODIFICATION_COUNT,
|
||||||
resolveSession.exceptionTracker
|
resolveSession.exceptionTracker
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user