diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerSession.java b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerSession.java index 0a47aa0a8269..3a3de3752626 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerSession.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerSession.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -403,8 +403,10 @@ public class DebuggerSession implements AbstractDebuggerSession { public void dispose() { getProcess().dispose(); Disposer.dispose(myUpdateAlarm); - DebuggerInvocationUtil.swingInvokeLater(getProject(), - () -> getContextManager().setState(SESSION_EMPTY_CONTEXT, State.DISPOSED, Event.DISPOSE, null)); + DebuggerInvocationUtil.swingInvokeLater(getProject(), () -> { + myContextManager.setState(SESSION_EMPTY_CONTEXT, State.DISPOSED, Event.DISPOSE, null); + myContextManager.dispose(); + }); } // ManagerCommands diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerStateManager.java b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerStateManager.java index 9e2fd3e2fcef..7522ee2d179e 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerStateManager.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerStateManager.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -46,4 +46,8 @@ public abstract class DebuggerStateManager { protected void fireStateChanged(@NotNull DebuggerContextImpl newContext, DebuggerSession.Event event) { myEventDispatcher.getMulticaster().changeEvent(newContext, event); } + + void dispose() { + myEventDispatcher.getListeners().clear(); + } }