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