gpt4 book ai didi

继承中的 Java 内存使用

转载 作者:IT王子 更新时间:2023-10-28 23:34:10 24 4
gpt4 key购买 nike

扩展基类时,Java 中的内存使用情况如何。

子类是否包含基类的实例(有它自己的开销和所有)还是只有它自己的 16 字节开销?

class Foo {
int x;
}

class Bar extends Foo {
int y;
}

那么,更具体地说,Bar 实例的内存使用量是多少?

Foo(包括开销)+ Bar(包括开销)

或只是Foo(不包括开销+ Bar(包括开销)

最佳答案

没有双重开销。

Java 将获取类、父类(super class)、计算所有字段所需的空间,并为单个实例分配所需的空间。

仅从内存的角度来看,根本不存在父类(super class)的概念,有 Foo 的实例只需要一个 int 的内存,而 Bar 的实例需要两个 int 的内存,其中一个是因为 Bar 恰好扩展了 Foo。

所以开销(或簿记或任何你想调用的东西)只发生一次。

但是,在使用 java 进行开发时,通常最好不要过多地关心内存,除非您有非常具体的(我的意思是非常非常非常具体的)用例,在这些用例上,记账开销会给您带来严重的问题。在这种情况下,还应考虑 8 字​​节填充。

通常,除了不必担心每个实例的内存开销之外,还有许多其他方法可以改善应用程序的内存占用或整体性能。

关于继承中的 Java 内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25891022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com