Index: trunk/src/org/openstreetmap/josm/io/OsmReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 1493)
+++ trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 1494)
@@ -142,4 +142,5 @@
           private OsmPrimitive current;
           private String generator;
+          private Map<String, String> keys = new HashMap<String, String>();
 //          int n = 0;
 
@@ -257,5 +258,11 @@
                     } else if (qName.equals("tag")) {
 //                         tagsN++;
-                         current.put(atts.getValue("k"), atts.getValue("v"));
+                        String key = atts.getValue("k");
+                        String internedKey = keys.get(key);
+                        if (internedKey == null) {
+                            internedKey = key;
+                            keys.put(key, key);
+                        }
+                         current.put(internedKey, atts.getValue("v"));
                     }
                } catch (NumberFormatException x) {
