ENUM存储(内存等)

时间:2012-10-24 14:23:15

标签: java performance memory enums

我只是问自己一个小问题,我不确定我是否能找到正确答案:

如果我在Java中使用ENUM,使用自己的构造函数(以及许多,许多,maaaaany参数) - 每次执行程序时存储在内存中的那些,或者它们是否只在内存中“加载”,如果它们得到的话使用

我的意思是,如果我有一个包含400个条目的ENUM,并且只使用其中一个条目 - 所有其他条目仍然存在于内存中吗?

某些伪代码:

public enum Type {
    ENTRY_A(val1, val2, val3, val4, new Object(val5, val6, val7, ...)),
    ENTRY_B(val1, val2, val3, val4, new Object(val5, val6, val7, ...)),
    ENTRY_C(val1, val2, val3, val4, new Object(val5, val6, val7, ...)),
    ...
}

如果我只使用ENTRY_A,并且不要触及ENTRY_B,ENTRY_C等 - 那么Java将如何处理?

感谢您的回答 - 是的,这主要是好奇心

3 个答案:

答案 0 :(得分:4)

是的,即使您只使用一个ENUM常量,所有内容都将被加载到内存中。

枚举是特殊类型的类,所有字段都是常量,因此当您加载ENUM时,它本身会将所有内容加载到内存中。

答案 1 :(得分:4)

第一次使用枚举时,将触发类初始化,所有值都将被创建并存储在内存中,就像任何其他类一样。

答案 2 :(得分:1)

你总是可以自己尝试一下。只需将System.println("test")放在enum的构造函数中,然后凭经验接受结果。