【发布时间】:2011-07-01 20:35:13
【问题描述】:
我想问一个关于在 Java 中避免字符串重复的问题。
context 是:一个带有如下标签和属性的 XML:
<product id="PROD" name="My Product"...></product>
使用 JibX,此 XML 在这样的类中编组/解组:
public class Product{
private String id;
private String name;
// constructor, getters, setters, methods and so on
}
程序是一个长时间的批处理,所以Product对象被创建、使用、复制等。
嗯,问题是: 当我使用 Eclipse 内存分析器 (MAT) 之类的软件分析执行时,我发现了几个重复的字符串。例如,在 id 属性中,PROD 值在 2000 个实例左右重复,等等。
如何避免这种情况? Product 类中的其他属性可能会在执行过程中改变它们的值,但像 id、name 等属性不会如此频繁地改变。
我已经阅读了一些关于 String.intern() 方法的内容,但我还没有使用过,我不确定它是否可以解决这个问题。我可以在类中的 static final 常量等属性中定义最常见的值吗?
我希望我能以正确的方式表达我的问题。 非常感谢任何帮助或建议。提前致谢。
【问题讨论】:
-
如果您有重复的 id,您如何区分两个 Product 对象?
-
@Suresh,产品是相同的,但它在不同的时刻和/或过程中的执行中被实例化。一个请求创建产品,另一个不同的请求创建其他实例,等等。因此,这些实例包含重复的字符串 PROD,并且内存分析器检测到内存浪费。
标签: java string duplicates