变量声明时的Java内存使用情况?

时间:2013-04-16 09:04:50

标签: java variables memory-management global-variables

关于内存效率,我有以下问题:

必须将正确的数据类型用于相应的变量。将1的数值表示为byte需要内存的八分之一(但如果我错了,请纠正我)。我的问题是,如果在定义变量类型或初始化时发生内存分配/推导?这可能看起来很奇怪,但我要求关于不需要初始化的全局变量,因为它们具有与局部变量相关的默认值。我还想知道对象数据类型是否有默认大小?我认为这是基于JVM(32位对64位)?

1 个答案:

答案 0 :(得分:0)

  

必须将正确的数据类型用于相应的变量。

当然。 Java是一种强类型语言。你的观点?

  

将数字值1表示为一个字节需要内存的八分之一(但如果我错了,请纠正我)。

你错了。根据相邻声明的其他变量和类型,它可能需要4个甚至8个字节,具体取决于JVM使用的填充。

  

我的问题是,如果在定义变量类型或初始化时发生内存分配/扣除?

都不是。它发生在分配时,即new时,而不是在构造函数中。例如。

  

这可能看起来很奇怪,但我要求关于不需要初始化的全局变量,因为它们有默认值

需要初始化所有变量。在静态或实例变量的情况下,您不必编写初始化程序代码。参考Java的“全球”一词没有任何意义。

  

而不是局部变量。

它没有任何区别。该变量仍然必须为其分配空间以及存储在其中的值,无论是静态,实例还是方法本地。

  

我还想知道对象数据类型是否有默认大小?我认为这是基于JVM(32位对64位)?

这个问题毫无意义。类Object的实例总是具有相同的大小,在任何地方都没有记录或指定,因此可以随JVM自由变化。其他类的实例同上。在任何有用的意义上,我都看不到任何“默认”。