在我的代码中我必须使用一些常量值,所以我创建了一个实用类
public class ConstantUtility {
public final static String category1_name1="category1/name1";
public final static String category1_name2="category1/name2";
public final static String category1_name3="category1/name3";
.
.
.
public final static String category2_name100="category2/name100";
public final static String category2_name101="category2/name101";
.
.
.
}
但我有大约 2000 个常量值,我没有在我的应用程序中使用所有这些值,但它们应该作为一个选择存在。问题是当我使用实用程序类时,所有变量都是静态变量,并且所有字符串值都加载到 jvm 中。
2000个常量分为6类。我尝试使用 6 个静态类,但仍然是一样的。当 jvm 找到静态类时,它会将每个静态变量加载到内存中。
与我真正使用的字符串常量内存相比,所有那些我不使用的常量内存被加载到 jvm 中要大得多。
问题:如何在所有这些常量中只加载一个常量到内存。
最佳答案
而且可以肯定的是:你问这个是因为你正在做一些“嵌入式”项目;你遇到了内存问题;并且您进行了概要分析/分析,发现拥有这 2000 个字符串确实在您的应用程序中存在问题?因为:如果您什么都不做 - 是什么让您认为您确实遇到了需要花时间解决的问题?
还有一个旁注:仅你有 2000 个常量这一事实;他们中的许多人“未使用”......非常表明你应该少担心这种设计对内存消耗的影响;但在设计本身。
老实说,从一开始就“可能不是一个很好的设计”来说,这闻起来很糟糕。
关于java - 在多个常量中将一个常量加载到jvm中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38068205/