You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2021/12/02 15:36:29 UTC
svn commit: r1895490 - in /pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger: PDFDebugger.java pagepane/PagePane.java
Author: tilman
Date: Thu Dec 2 15:36:29 2021
New Revision: 1895490
URL: http://svn.apache.org/viewvc?rev=1895490&view=rev
Log:
PDFBOX-5320: use simpler way to avoid memory leaks
Modified:
pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java
pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java
Modified: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java?rev=1895490&r1=1895489&r2=1895490&view=diff
==============================================================================
--- pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java (original)
+++ pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java Thu Dec 2 15:36:29 2021
@@ -71,6 +71,7 @@ import javax.swing.border.BevelBorder;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.filechooser.FileFilter;
import javax.swing.tree.TreePath;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -1053,33 +1054,6 @@ public class PDFDebugger extends JFrame
private void replaceRightComponent(Component pane)
{
int div = jSplitPane.getDividerLocation();
-
- // Avoid memory leak with the display image
- // if anyone knows a better way to do this, please tell
- Component rightComponent = jSplitPane.getRightComponent();
- if (rightComponent instanceof JScrollPane)
- {
- JScrollPane scrollPane = (JScrollPane) rightComponent;
- Component view = scrollPane.getViewport().getView();
- if (view instanceof JPanel)
- {
- JPanel panel = (JPanel) view;
- for (Component component : panel.getComponents())
- {
- if (component instanceof JLabel)
- {
- ((JLabel) component).setIcon(null);
- }
- }
- panel.removeAll();
- scrollPane.getViewport().setView(null);
- scrollPane.getViewport().removeAll();
- scrollPane.setViewport(null);
- scrollPane.removeAll();
- // still leaks but it's really the image that bothers; listeners still active
- }
- }
-
jSplitPane.setRightComponent(pane);
jSplitPane.setDividerLocation(div);
}
Modified: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java?rev=1895490&r1=1895489&r2=1895490&view=diff
==============================================================================
--- pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java (original)
+++ pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java Thu Dec 2 15:36:29 2021
@@ -376,6 +376,13 @@ public class PagePane implements ActionL
}
}
}
+
+ // this avoids memory leaks with the display image; other memory leaks may still exist
+ label.removeMouseMotionListener(this);
+ label.removeMouseListener(this);
+ label.setIcon(null);
+ panel.removeAncestorListener(this);
+ panel.removeAll();
}
@Override