Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 14508)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 14509)
@@ -568,4 +568,6 @@
         if (!isVisible())
             return;
+        if (event != null && event.getSelection().isEmpty())
+            editHelper.resetSelection();
         if (tagTable == null)
             return; // selection changed may be received in base class constructor before init
@@ -708,4 +710,5 @@
         if (e.getSource().getEditLayer() == null) {
             editHelper.saveTagsIfNeeded();
+            editHelper.resetSelection();
         }
         // it is time to save history of tags
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java	(revision 14508)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java	(revision 14509)
@@ -133,4 +133,5 @@
     public static final ListProperty PROPERTY_RECENT_TAGS = new ListProperty("properties.recent-tags",
             Collections.<String>emptyList());
+    /** The preference list of tags which should not be remembered, since r9940 */
     public static final StringProperty PROPERTY_TAGS_TO_IGNORE = new StringProperty("properties.recent-tags.ignore",
             new SearchSetting().writeToString());
@@ -365,4 +366,12 @@
             recentTags.saveToPreference(PROPERTY_RECENT_TAGS);
         }
+    }
+
+    /**
+     * Forget recently selected primitives to allow GC.
+     * @since 14509
+     */
+    public void resetSelection() {
+        sel = null;
     }
 
