? visualweb/designer/test/lib ? visualweb/designer/test/results ? visualweb/designer/test/work Index: visualweb/designer/src/org/netbeans/modules/visualweb/designer/WebForm.java =================================================================== RCS file: /cvs/visualweb/designer/src/org/netbeans/modules/visualweb/designer/WebForm.java,v retrieving revision 1.176 diff -u -r1.176 WebForm.java --- visualweb/designer/src/org/netbeans/modules/visualweb/designer/WebForm.java 26 Oct 2007 00:14:57 -0000 1.176 +++ visualweb/designer/src/org/netbeans/modules/visualweb/designer/WebForm.java 29 Nov 2007 22:01:49 -0000 @@ -72,6 +72,7 @@ import java.util.List; import java.util.Map; +import java.util.WeakHashMap; import javax.swing.CellRendererPane; import javax.swing.JComponent; import javax.swing.event.EventListenerList; @@ -596,11 +597,13 @@ // } // #106433 There needs to be 1:N mapping for element : box. // TODO Revise potential memory leak, boxes linked to the elements! - Map webform2box = (Map)element.getUserData(KEY_CSS_BOX_MAP); + Map> webform2box = (Map>)element.getUserData(KEY_CSS_BOX_MAP); if (webform2box == null) { - webform2box = new HashMap(); + // #123003 Possible improvement of getting rid of memory leaks, + // to keep weak refs only to the box. + webform2box = new WeakHashMap>(); } - webform2box.put(this, box); + webform2box.put(this, new WeakReference(box)); element.setUserData(KEY_CSS_BOX_MAP, webform2box, CssBoxDataHandler.getDefault()); } @@ -611,8 +614,10 @@ if (element == null) { return null; } - Map webform2box = (Map)element.getUserData(KEY_CSS_BOX_MAP); - return webform2box == null ? null : webform2box.get(this); + Map> webform2box = (Map>)element.getUserData(KEY_CSS_BOX_MAP); +// return webform2box == null ? null : webform2box.get(this); + WeakReference cssBoxWRef = webform2box == null ? null : webform2box.get(this); + return cssBoxWRef == null ? null : cssBoxWRef.get(); } // XXX Temporary, see DesignerService.copyBoxForElement.