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



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

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

必须为相应的变量使用正确的数据类型。

当然

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

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

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

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

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

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

所有变量都需要初始化。对于静态变量或实例变量,您不需要编写初始化器代码。"global"这个词在Java中没有任何意义。

相对于局部变量

它是什么没有任何区别。变量仍然需要分配空间并存储值,无论是静态的、实例的还是方法局部的。

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

这个问题没有意义。Object类的实例总是具有相同的大小,小心地没有在任何地方记录或指定,因此可以随JVM自由变化。其他类的实例同上。

相关内容

  • 没有找到相关文章

最新更新