diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/DebuggerTree.java b/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/DebuggerTree.java index c23bcfefcb09..32ace1064daf 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/DebuggerTree.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/DebuggerTree.java @@ -324,6 +324,9 @@ public abstract class DebuggerTree extends DebuggerTreeBase implements DataProvi } else { showMessage(session != null? session.getStateDescription() : DebuggerBundle.message("status.debug.stopped")); + if (session == null || session.isStopped()) { + getNodeFactory().clearHistory(); // save memory by clearing references on JDI objects + } } } diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/NodeManagerImpl.java b/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/NodeManagerImpl.java index 905f7b008fbd..53e820da02fd 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/NodeManagerImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/NodeManagerImpl.java @@ -122,10 +122,14 @@ public class NodeManagerImpl extends NodeDescriptorFactoryImpl implements NodeMa } public void dispose() { - myHistories.clear(); + clearHistory(); super.dispose(); } + public void clearHistory() { + myHistories.clear(); + } + private DebuggerTree getTree() { return myDebuggerTree; }