Java - .class文件中未初始化的静态变量

时间:2015-05-25 02:43:57

标签: java .class-file

在c中,未初始化的静态变量不占用可执行文件中的空格。

Java怎么样? static variable.class文件中占用空间吗?

提示:问题是关于磁盘空间,而不是内存。

2 个答案:

答案 0 :(得分:2)

所有字段在类文件中都有一个条目,提供名称,类型,标志(final,public,volatile,static等)和其他数据。

如果你想一想,就必须这样。 Java不是C,其中变量只是bss中的位置或者其他什么。您有反射和运行时类型检查,因此必须维护所有信息。

如果字段已初始化,则类文件中将有其他数据进行初始化(方法中的ConstantValue属性或字节码)。但是,即使未初始化的字段也必须在类文件中包含字段条目。

答案 1 :(得分:-1)

是的,他们会占用记忆。即使您没有初始化它,java中的所有变量都将分配默认值。所以,

int i;
在这种情况下,

将占用内存。以下是一些进一步的阅读:Do uninitialized primitive instance variables use memory?