使用另一个最终静态初始化最终静态变量时的内存消耗

时间:2015-03-19 05:30:31

标签: java memory-management compiler-optimization

我的问题是,如果我在一个类中创建一个最终的静态变量并用另一个最终的静态变量(已经声明和初始化)初始化它。 这两个变量的内存消耗量是多少。

例如: -

class SomeClass{

private static final byte VARIABLE_1 = 0x01;

private static final byte VARIABLE_2 = VARIABLE_1;

...

}

VARIABLE_1,VARIABLE_2消耗的内存是什么?

提前致谢。

2 个答案:

答案 0 :(得分:3)

在您的示例中,在运行时,0字节。 final static 基元由编译器内联,它们是常量。

答案 1 :(得分:0)

类文件包含它使用的任何静态最终字段的常量值的副本。它使用的内存可以忽略不计。

SomeClass声明两个常量VARIABLE_1VARIABLE_2,并使用编译时常量的表达式初始化它们。

编译器知道VARIABLE_1代表值0x01VARIABLE_2 代表值0x01。当Java虚拟机加载SomeClass类时,VARIABLE_1VARIABLE_2不会作为类变量存储在方法区域中。

VARIABLE_1VARIABLE_2字段不是类变量,它们是常量,Java编译器将它们表示的常量int值放入任何使用它们的类的常量池中。

相关问题