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.

Attachment: signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil

Reply via email to