【发布时间】:2017-09-06 04:44:57
【问题描述】:
Class Abc {
Integer a;
Integer b;
Integer c;
getters();
setters();
}
当我创建对象 Abc abc = new Abc() 即 12 字节(整数为 4 字节)或为变量设置一些值(如 setA(10).)时是否分配内存?
【问题讨论】:
-
假设您的意思是堆内存而不是堆栈:对于此类,当您调用
new时,您会分配 3x8 = 24 个字节(众所周知,Java 引用通常需要 8 个字节,而您有 3 个其中),然后在创建时至少为每个Integer再增加 4 个字节。另外,在加载类文件时,Class本身有一次分配(不知道有多少字节,请查看类文件)。 -
内存在对象初始化时分配(即
new Object())。但是,int每个需要 4 个字节,而您正在使用Integer包装器(盒装)类,这将需要更多内存。 -
调用
new时分配内存。 -
这篇文章可能有助于理解。 link
-
对象创建期间分配的实例变量的内存,类加载期间创建的静态变量的内存