使用另一个最终静态初始化最终静态变量时的内存消耗
我的问题是,如果我在类中创建了最终静态变量并使用另一个最终静态变量(已声明和初始化)初始化它。 这两个变量的内存消耗是多少。使用另一个最终静态初始化最终静态变量时的内存消耗
例如: -
class SomeClass{
private static final byte VARIABLE_1 = 0x01;
private static final byte VARIABLE_2 = VARIABLE_1;
...
}
什么会通过VARIABLE_1,variable_2的是内存消耗?
在此先感谢。
在你的例子中,在运行时,0字节。 final static
原语被编译器内联,它们是常量。
我认为这是为了减少内存消耗并提高效率,因为它不需要额外调用以获取变量的值? – JClassic 2015-03-19 05:36:43
你是对的。这是关于改善代码的内存消耗。不管怎么说,多谢拉。 – HSJ 2015-03-19 05:38:55
@JClassic - 更多的*这个值在运行时永远不会改变,所以为什么不对它进行硬编码并提高效率*? – TheLostMind 2015-03-19 05:39:07
类文件包含它使用的任何静态final字段的常量值的副本,因此它正在使用的内存可以忽略不计。
类SomeClass
声明了两个常量,VARIABLE_1
和VARIABLE_2
,并使用编译时常量的表达式对它们进行初始化。
编译器知道VARIABLE_1
代表值0x01
和VARIABLE_2
代表值0x01
。当由Java虚拟机加载SomeClass
类时,VARIABLE_1
和VARIABLE_2
不作为类变量存储在方法区域中。
VARIABLE_1
和VARIABLE_2
字段不是类变量,它们是常量,Java编译器将它们表示的常量int值放入任何使用它们的类的常量池中。
最多两个字节,但它们可能完全被编译器或JVM忽略。 – EJP 2015-03-19 05:56:12