mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 03:21:12 +07:00
IJPL-172041 Use ClearableClassValue InspectionVisitorOptimizer.SELF_AND_SUPERS to avoid memory leaks on unloaded classes
GitOrigin-RevId: af221a57257bd2dc8d08365b36185304dfe76cdb
This commit is contained in:
committed by
intellij-monorepo-bot
parent
b3226a47c2
commit
1e3b46d241
@@ -24,6 +24,7 @@ import com.intellij.psi.impl.source.tree.CompositePsiElement;
|
||||
import com.intellij.psi.impl.source.tree.LeafElement;
|
||||
import com.intellij.psi.impl.source.tree.TreeElement;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.ClearableClassValue;
|
||||
import com.intellij.util.containers.CollectionFactory;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -132,9 +133,14 @@ public final class InspectionVisitorOptimizer {
|
||||
return accepts;
|
||||
}
|
||||
|
||||
private static final ClassValue<Class<?>[]> SELF_AND_SUPERS = new ClassValue<>() {
|
||||
@ApiStatus.Internal
|
||||
public static void clearCache() {
|
||||
SELF_AND_SUPERS.clear();
|
||||
}
|
||||
|
||||
private static final ClearableClassValue<Class<?>[]> SELF_AND_SUPERS = new ClearableClassValue<Class<?>[]>() {
|
||||
@Override
|
||||
protected Class<?> @NotNull [] computeValue(@NotNull Class<?> type) {
|
||||
public Class<?> @NotNull [] computeValueImpl(@NotNull Class<?> type) {
|
||||
return getAllSupers(type);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.intellij.ide.plugins
|
||||
|
||||
import com.fasterxml.jackson.databind.type.TypeFactory
|
||||
import com.intellij.DynamicBundle.LanguageBundleEP
|
||||
import com.intellij.codeInsight.daemon.impl.InspectionVisitorOptimizer
|
||||
import com.intellij.configurationStore.jdomSerializer
|
||||
import com.intellij.configurationStore.runInAutoSaveDisabledMode
|
||||
import com.intellij.configurationStore.saveProjectsAndApp
|
||||
@@ -550,6 +551,7 @@ object DynamicPlugins {
|
||||
|
||||
jdomSerializer.clearSerializationCaches()
|
||||
clearPropertyCollectorCache()
|
||||
InspectionVisitorOptimizer.clearCache()
|
||||
TypeFactory.defaultInstance().clearCache()
|
||||
TopHitCache.getInstance().clear()
|
||||
ActionToolbarImpl.resetAllToolbars()
|
||||
|
||||
Reference in New Issue
Block a user