提交 8019dbe0 编写于 作者: V Vladimir Dolzhenko 提交者: Space

Do not leak LowMemoryWatcher on plugin unload

#KT-44543 Fixed
上级 76c2288e
......@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.resolve.jvm;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.DumbService;
......@@ -58,7 +59,7 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
public class KotlinJavaPsiFacade {
public class KotlinJavaPsiFacade implements Disposable {
private volatile KotlinPsiElementFinderWrapper[] elementFinders;
private static class PackageCache {
......@@ -96,9 +97,9 @@ public class KotlinJavaPsiFacade {
emptyModifierList = new LightModifierList(PsiManager.getInstance(project), KotlinLanguage.INSTANCE);
// drop entire cache when it is low free memory
LowMemoryWatcher.register(this::clearPackageCaches, project);
LowMemoryWatcher.register(this::clearPackageCaches, this);
MessageBusConnection connection = project.getMessageBus().connect();
MessageBusConnection connection = project.getMessageBus().connect(this);
// VFS changes like create/delete/copy/move directory are subject to clean up short term caches
connection.subscribe(VirtualFileManager.VFS_CHANGES, new BulkFileListener() {
......@@ -139,6 +140,11 @@ public class KotlinJavaPsiFacade {
});
}
@Override
public void dispose() {
clearPackageCaches();
}
public void clearPackageCaches() {
clearPackageCaches(true);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册