gpt4 book ai didi

java - java对象的内存预留

转载 作者:太空宇宙 更新时间:2023-11-03 10:27:11 25 4
gpt4 key购买 nike

我知道在 C++ 中声明对象实例时是这样的:

Object object

调用对象构造函数并为该对象提供内存,但是我发现当您在 java 中执行此操作时,对象实例没有值,直到:

object = new Object()

写了。我想具体知道什么时候为对象提供内存。我认为构造和 new 关键字都分配了内存,所以 Object object = new Object() 似乎是多余的。我在 oracle 的网站上看到声明“保留”内存和新的“分配”内存,我想知道这两者之间有什么区别。

最佳答案

您需要区分变量 所需的空间和对象 所需的空间。请记住,变量的值只是一个引用——非常像 C++ 中的指针。所以如果你有:

Object x = null;

那么变量x本身就占用了足够的引用空间(通常是4或8字节)。现在,如果您有:

x = new Object();

创建一个对象 - x 的值现在是对新创建对象的引用。 x 本身占用的空间与以前相同,但对象本身也需要空间(主要是字段、对象类型的引用以及同步和内部数据)保持)。

关于java - java对象的内存预留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29633618/

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