[ https://issues.apache.org/jira/browse/PIVOT-861?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13576764#comment-13576764 ]
Sandro Martini commented on PIVOT-861: -------------------------------------- Workaround number 2 (simpler and better than number 1): leave resourceCache enabled (without change it, and without add a disable flag), and instead add a clearImageListeners() method in Image, and call it after get an Image instance from resourceCache, for example in the ButtonData.java, so we could have something like this: public void setIcon(URL iconURL) { if (iconURL == null) { throw new IllegalArgumentException("iconURL is null."); } Image iconLocal = (Image)ApplicationContext.getResourceCache().get(iconURL); if (iconLocal == null) { try { iconLocal = Image.load(iconURL); // TODO: move here ... ApplicationContext.getResourceCache().put(iconURL, iconLocal); } catch (TaskExecutionException exception) { throw new IllegalArgumentException(exception); } } else { // TODO: new ... iconLocal.clearImageListeners(); } setIcon(iconLocal); } In this way I get the same final result as workaround number 1, but to me this seems a little better. Then probably this could be applied even to all other similar classes ... Comments ? > Memory leak: Window icon ImageListenerList retains reference to closed > windows, preventing garbage collection > ------------------------------------------------------------------------------------------------------------- > > Key: PIVOT-861 > URL: https://issues.apache.org/jira/browse/PIVOT-861 > Project: Pivot > Issue Type: Bug > Components: wtk, wtk-media > Affects Versions: 2.0.2 > Environment: Windows XP, Java 1.7.0_05 > Reporter: David Keen > Assignee: Sandro Martini > Fix For: 2.0.3 > > Attachments: leaktest.zip, Pivot861.launch, PivotSample.zip > > > When a window or dialog is opened which has an icon, after it is closed it > cannot be garbage collected because a reference is retained to it through the > icon. Removing the icon resolves the issue. > As far as I've investigated, the issue appears to the in the > ImageListenerList which each Image contains. I've done a heapdump of my > application and used the IBM HeapAnalyzer which shows this list containing a > reference to the window/dialog through the ImageViewSkin, but I don't know > the Pivot internals well enough to see where or how it should be released. > I'll attach a simple test application to show the issue. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira