使用继承A类的B类启动的对象是否占用堆中的内存比使用A类启动的对象占用更多内存。以下是我正在考虑的两种情况:
情景1:
class A {
String name;
}
class B extends A {
}
情景2:
class A {
String name;
}
class B extends A {
int age;
}
答案 0 :(得分:6)
看看你的例子:
场景#1:A
的实例与B
的实例
场景#2:B
的实例占用的空间比A
的实例多,但它取决于字对齐方式,以及是否依赖于运行32位或64位JVM和/或启用“压缩oops”。简而言之,答案是JVM特定的。
通常,子类化本身不需要每个实例额外的内存,但是可能的额外字段可以做,这取决于JVM如何在堆节点中布置实例字段
但我同意这些评论。 Java应用程序程序员不应该关心他/她自己这种事情。大小的差异可能很小,以至于无关紧要......除非您必须创建百万这些对象。即便如此,可能还有更重要的事情需要担心。