重复定义字符串文字常量会占用更多内存吗?

时间:2018-08-14 17:46:57

标签: java static

方法1 :说我在500(五百)个类中有一个常数,如下所示:

public static final String NAME = "CHICAGO";

方法2 :或者我可以将其存储在一个类中,然后将该类导入这500个类中,然后直接Constants.NAME调用它。

public class Constants {
private Constants() {   }
public static final String NAME = "CHICAGO";
}

有人可以回答我这两种方法的内存占用量是多少?方法A是否会占用更多内存?还是方法B会占用相等的内存?

此问题仅与内存占用量有关。

1 个答案:

答案 0 :(得分:-1)

使用方法1时,当500个类中的每一个都加载时  (a)您将有500个引用指向CHICAGO,这是多余的  (b)如果以后发生价值更改,您将需要在任何地方进行更改

方法2会更好,因为您将定义该行 public static final String NAME = "CHICAGO"; 而不是500次。

总结:

在这两种情况下,我们在文字池中只有一个CHICAGO(由于实习),但是使用方法1时,我们将有500个不必要的引用。