I fixed a possible memory leak in KeyboardManager. There we use a Hashtable to register toplevel components to maps. However, when the toplevel component could be garbage collected, this mapping will hold it back. I changed this to use a WeakHashMap instead.
2006-05-18 Roman Kennke <[EMAIL PROTECTED]>
* javax/swing/KeyboardManager.java
(topLevelLookup): Use WeakHashMap to avoid memory leak.
/Roman
--
“Improvement makes straight roads, but the crooked roads, without
Improvement, are roads of Genius.” - William Blake
Index: javax/swing/KeyboardManager.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/KeyboardManager.java,v
retrieving revision 1.6
diff -u -1 -0 -r1.6 KeyboardManager.java
--- javax/swing/KeyboardManager.java 25 Mar 2006 18:23:20 -0000 1.6
+++ javax/swing/KeyboardManager.java 18 May 2006 13:51:35 -0000
@@ -39,40 +39,41 @@
package javax.swing;
import java.applet.Applet;
import java.awt.Component;
import java.awt.Container;
import java.awt.Window;
import java.awt.event.KeyEvent;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;
+import java.util.WeakHashMap;
/**
* This class maintains a mapping from top-level containers to a
* Hashtable. The Hashtable maps KeyStrokes to Components to be used when
* Components register keyboard actions with the condition
* JComponent.WHEN_IN_FOCUSED_WINDOW.
*
* @author Anthony Balkissoon abalkiss at redhat dot com
*
*/
class KeyboardManager
{
/** Shared instance of KeyboardManager **/
static KeyboardManager manager = new KeyboardManager();
/**
* A mapping between top level containers and Hashtables that
* map KeyStrokes to Components.
*/
- Hashtable topLevelLookup = new Hashtable();
+ WeakHashMap topLevelLookup = new WeakHashMap();
/**
* A mapping between top level containers and Vectors of JMenuBars
* used to allow all the JMenuBars within a top level container
* a chance to consume key events.
*/
Hashtable menuBarLookup = new Hashtable();
/**
* Returns the shared instance of KeyboardManager.
* @return the shared instance of KeybaordManager.
signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil
