fix convoluted Disposable registration which wastes memory; add SSR for catching that

This commit is contained in:
Alexey Kudravtsev
2018-12-06 18:43:23 +03:00
parent 20453a1c42
commit 140e3d2320
4 changed files with 8 additions and 3 deletions
+5
View File
@@ -841,6 +841,11 @@
<constraint name="s1" minCount="0" maxCount="2147483647" within="" contains="" />
<constraint name="s2" minCount="0" maxCount="2147483647" within="" contains="" />
</replaceConfiguration>
<replaceConfiguration name="Too convoluted &quot;register(()-&gt;dispose())&quot; (wastes memory)" text="Disposer.register($myRoot$, () -&gt; Disposer.dispose($myFolder2$));" recursive="true" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="Disposer.register($myRoot$, $myFolder2$);">
<constraint name="__context__" within="" contains="" />
<constraint name="myRoot" within="" contains="" />
<constraint name="myFolder2" within="" contains="" />
</replaceConfiguration>
</inspection_tool>
<inspection_tool class="SafeVarargsDetector" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="SeamAnnotationIncorrectSignatureInspection" enabled="false" level="ERROR" enabled_by_default="false" />
@@ -179,7 +179,7 @@ public class FileStructurePopup implements Disposable, TreeActionsOwner {
myAsyncTreeModel.setRootImmediately(myStructureTreeModel.getRootImmediately());
myTree = new MyTree(myAsyncTreeModel);
StructureViewComponent.registerAutoExpandListener(myTree, myTreeModel);
Disposer.register(this, () -> Disposer.dispose(myTreeModelWrapper));
Disposer.register(this, myTreeModelWrapper);
ModelListener modelListener = () -> rebuild(false);
myTreeModel.addModelListener(modelListener);
@@ -24,7 +24,7 @@ public class VcsLogProgress implements Disposable {
private boolean myDisposed = false;
public VcsLogProgress(@NotNull Project project, @NotNull Disposable parent) {
Disposer.register(parent, () -> Disposer.dispose(this));
Disposer.register(parent, this);
Disposer.register(project, this);
}
@@ -227,7 +227,7 @@ public class VcsLogUtil {
* @param disposable disposable to register.
*/
public static void registerWithParentAndProject(@NotNull Disposable parent, @NotNull Project project, @NotNull Disposable disposable) {
Disposer.register(parent, () -> Disposer.dispose(disposable));
Disposer.register(parent, disposable);
Disposer.register(project, disposable);
}