diff --git a/plugins/editor/org.eclipse.papyrus.sirius.editor/src/org/eclipse/papyrus/sirius/editor/internal/editor/NestedSiriusDiagramViewEditor.java b/plugins/editor/org.eclipse.papyrus.sirius.editor/src/org/eclipse/papyrus/sirius/editor/internal/editor/NestedSiriusDiagramViewEditor.java
index 9691fe2..3de0596 100755
--- a/plugins/editor/org.eclipse.papyrus.sirius.editor/src/org/eclipse/papyrus/sirius/editor/internal/editor/NestedSiriusDiagramViewEditor.java
+++ b/plugins/editor/org.eclipse.papyrus.sirius.editor/src/org/eclipse/papyrus/sirius/editor/internal/editor/NestedSiriusDiagramViewEditor.java
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright (c) 2021-2023 CEA LIST, Artal Technologies, Obeo and others.
+ * Copyright (c) 2021-2024 CEA LIST, Artal Technologies, Obeo and others.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -12,6 +12,7 @@
  *  Aurelien Didier (ARTAL) - aurelien.didier51@gmail.com - Initial API and implementation
  *  Jessy MALLET (OBEO) <jessy.mallet@obeo.fr> - Bug 579782
  *  Vincent LORENZO (CEA-LIST) - vincent.lorenzo@cea.fr - Bug 581387
+ *  Dilan EESHVARAN (CEA-LIST) - dilan.eeshvaran@cea.fr - Bug 583164
  *****************************************************************************/
 package org.eclipse.papyrus.sirius.editor.internal.editor;
 
@@ -39,6 +40,7 @@
 import org.eclipse.gef.ui.actions.ZoomInAction;
 import org.eclipse.gef.ui.actions.ZoomOutAction;
 import org.eclipse.gmf.runtime.common.ui.util.IPartSelector;
+import org.eclipse.gmf.runtime.diagram.core.listener.DiagramEventBroker;
 import org.eclipse.gmf.runtime.diagram.ui.actions.ActionIds;
 import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
 import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;
@@ -54,6 +56,7 @@
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.papyrus.infra.core.sashwindows.di.service.IPageManager;
 import org.eclipse.papyrus.infra.core.services.ServiceException;
 import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
 import org.eclipse.papyrus.infra.emf.utils.EMFHelper;
@@ -67,6 +70,7 @@
 import org.eclipse.sirius.business.api.session.Session;
 import org.eclipse.sirius.business.api.session.SessionManager;
 import org.eclipse.sirius.diagram.DSemanticDiagram;
+import org.eclipse.sirius.diagram.model.business.internal.spec.DSemanticDiagramSpec;
 import org.eclipse.sirius.diagram.ui.internal.edit.parts.DEdgeEditPart;
 import org.eclipse.sirius.diagram.ui.internal.edit.parts.DNode3EditPart;
 import org.eclipse.sirius.diagram.ui.internal.edit.parts.DNodeContainer2EditPart;
@@ -80,6 +84,7 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorReference;
 import org.eclipse.ui.IEditorSite;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.PartInitException;
@@ -113,7 +118,7 @@
 	// TODO check if the code with keyhandler is useful or useless
 	private KeyHandler keyHandler;
 
-	/** Command stack listener used to propagate Dirty state*/
+	/** Command stack listener used to propagate Dirty state */
 	private CommandStackListener commandStackListener = new CommandStackListener() {
 
 		@Override
@@ -145,7 +150,7 @@
 		try {
 			saveAndDirtyService = servicesRegistry.getService(ISaveAndDirtyService.class);
 		} catch (ServiceException e) {
-			Activator.log.error("Unexpected Error",e); //$NON-NLS-1$
+			Activator.log.error("Unexpected Error", e); //$NON-NLS-1$
 		}
 		saveAndDirtyService.registerIsaveablePart(this);
 
@@ -159,7 +164,7 @@
 			Assert.isNotNull(this.servicesRegistry, "The papyrus ServicesRegistry is null. The Diagram Editor creation failed."); //$NON-NLS-1$
 			initializeEditingDomain();
 		} catch (ServiceException e) {
-			Activator.log.error("Unexpected Error",e); //$NON-NLS-1$
+			Activator.log.error("Unexpected Error", e); //$NON-NLS-1$
 		}
 	}
 
@@ -172,7 +177,7 @@
 		try {
 			return (ISiriusSessionService) this.servicesRegistry.getService(ISiriusSessionService.SERVICE_ID);
 		} catch (ServiceException e) {
-			Activator.log.error("Unexpected Error",e); //$NON-NLS-1$
+			Activator.log.error("Unexpected Error", e); //$NON-NLS-1$
 		}
 		return null;
 	}
@@ -316,7 +321,7 @@
 				try {
 					NestedSiriusDiagramViewEditor.super.init(site, diagramViewEditorInput);
 				} catch (PartInitException e) {
-					Activator.log.error("Unexpected Error",e); //$NON-NLS-1$
+					Activator.log.error("Unexpected Error", e); //$NON-NLS-1$
 				}
 			}
 		});
@@ -557,5 +562,38 @@
 		}
 		super.dispose();
 	}
+	
+	/**
+	 * @see org.eclipse.sirius.diagram.ui.tools.internal.editor.DDiagramEditorImpl#stopDiagramEventBrokerListener()
+	 * @see bug 583164
+	 * 
+	 */
+	protected void stopDiagramEventBrokerListener(TransactionalEditingDomain ted) {
+		// Try to remove the diagram event broker if it's no more needed to avoid memory leak
+		int nbGMFDiagramEditorsOfSameTED = 0;
+		if (getSite() != null && getSite().getPage() != null) {
+			for (IEditorReference editorRef : getSite().getPage().getEditorReferences()) {
+				IEditorPart editorPart = editorRef.getEditor(false);
+				if (editorPart instanceof IMultiDiagramEditor papyrusEditor) {
+					ServicesRegistry servReg = papyrusEditor.getServicesRegistry();
+					IPageManager pageM = null;
+					try {
+						pageM = servReg.getService(IPageManager.class);
+					} catch (ServiceException e) {
+						Activator.log.error("Unexpected Error", e); //$NON-NLS-1$
+					}
+					for (Object tmp : pageM.allPages()) {
+						if (tmp instanceof DSemanticDiagramSpec semD && pageM.isOpen(semD)) {
+							nbGMFDiagramEditorsOfSameTED++;
+						}
+					}
+				}
+			}
+		}
+		if (nbGMFDiagramEditorsOfSameTED == 0 && ted != null) {
+			// Remove the diagram event broker because there is no more opened diagram
+			DiagramEventBroker.stopListening(ted);
+		}
+	}
 
 }
