Index: trunk/src/org/openstreetmap/josm/data/osm/RelationMemberData.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/RelationMemberData.java	(revision 17466)
+++ trunk/src/org/openstreetmap/josm/data/osm/RelationMemberData.java	(revision 17471)
@@ -27,5 +27,5 @@
     public RelationMemberData(String role, OsmPrimitiveType type, long id) {
         CheckParameterUtil.ensureParameterNotNull(type, "type");
-        this.role = role == null ? "" : role;
+        this.role = (role == null ? "" : role).intern();
         this.memberType = type;
         this.memberId = id;
Index: trunk/src/org/openstreetmap/josm/data/osm/history/HistoryDataSet.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/history/HistoryDataSet.java	(revision 17466)
+++ trunk/src/org/openstreetmap/josm/data/osm/history/HistoryDataSet.java	(revision 17471)
@@ -216,7 +216,15 @@
         if (!MainApplication.isDisplayingMapView()) return;
         if (MainApplication.getLayerManager().getLayers().isEmpty()) {
-            data.clear();
-            fireCacheCleared();
-        }
+            clear();
+        }
+    }
+
+    /**
+     * Clear the history data.
+     * @since 17471
+     */
+    public void clear() {
+        data.clear();
+        fireCacheCleared();
     }
 }
Index: trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java	(revision 17466)
+++ trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java	(revision 17471)
@@ -120,4 +120,7 @@
             // see #17270: set focus to last dialog
             new LinkedList<>(dialogs.values()).getLast().toFront();
+        } else {
+            // we always reload the history, so there is no need to keep it in the cache.
+            HistoryDataSet.getInstance().clear();
         }
     }
