You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by tg...@apache.org on 2012/10/31 15:59:48 UTC
svn commit: r1404179 - in
/hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop:
conf/Configuration.java util/StringInterner.java
Author: tgraves
Date: Wed Oct 31 14:59:47 2012
New Revision: 1404179
URL: http://svn.apache.org/viewvc?rev=1404179&view=rev
Log:
MAPREDUCE-4752. Reduce MR AM memory usage through String Interning (Robert Evans via tgraves)
Modified:
hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/StringInterner.java
Modified: hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java?rev=1404179&r1=1404178&r2=1404179&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java (original)
+++ hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java Wed Oct 31 14:59:47 2012
@@ -74,6 +74,7 @@ import org.apache.hadoop.io.Writable;
import org.apache.hadoop.io.WritableUtils;
import org.apache.hadoop.net.NetUtils;
import org.apache.hadoop.util.ReflectionUtils;
+import org.apache.hadoop.util.StringInterner;
import org.apache.hadoop.util.StringUtils;
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonGenerator;
@@ -1916,13 +1917,16 @@ public class Configuration implements It
continue;
Element field = (Element)fieldNode;
if ("name".equals(field.getTagName()) && field.hasChildNodes())
- attr = ((Text)field.getFirstChild()).getData().trim();
+ attr = StringInterner.weakIntern(
+ ((Text)field.getFirstChild()).getData().trim());
if ("value".equals(field.getTagName()) && field.hasChildNodes())
- value = ((Text)field.getFirstChild()).getData();
+ value = StringInterner.weakIntern(
+ ((Text)field.getFirstChild()).getData());
if ("final".equals(field.getTagName()) && field.hasChildNodes())
finalParameter = "true".equals(((Text)field.getFirstChild()).getData());
if ("source".equals(field.getTagName()) && field.hasChildNodes())
- source.add(((Text)field.getFirstChild()).getData());
+ source.add(StringInterner.weakIntern(
+ ((Text)field.getFirstChild()).getData()));
}
source.add(name);
Modified: hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/StringInterner.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/StringInterner.java?rev=1404179&r1=1404178&r2=1404179&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/StringInterner.java (original)
+++ hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/StringInterner.java Wed Oct 31 14:59:47 2012
@@ -59,6 +59,9 @@ public class StringInterner {
* @return strong reference to interned string instance
*/
public static String strongIntern(String sample) {
+ if (sample == null) {
+ return null;
+ }
return strongInterner.intern(sample);
}
@@ -72,6 +75,9 @@ public class StringInterner {
* @return weak reference to interned string instance
*/
public static String weakIntern(String sample) {
+ if (sample == null) {
+ return null;
+ }
return weakInterner.intern(sample);
}