gpt4 book ai didi

java - JVM 如何为对象分配内存,尽管它们以后可能会增长

转载 作者:行者123 更新时间:2023-11-30 05:55:54 24 4
gpt4 key购买 nike

假设我们在 java 中有一个 Node 类,如下所示:

class Node{
Node prev;
Node next;
}

当我们创建一个新的 Node (Node Sample = new Node();) 时,JVM 如何为该对象分配足够的内存。它的大小将来可能会改变。例如,稍后我可以设置sample.setPrev(new Node())等等。因此,如果 JVM 考虑此示例对象在内存中的索引为 1000 到 2000,那么它的大小可能会发生变化,并且内存索引 2001 可能不为空供我们使用。

最佳答案

所有 Java 对象都有一个在对象构造时已知的固定大小。您的代码执行的任何操作都不会导致对象增长并需要更多空间。

要了解为什么会这样,您必须了解 the difference between an object and an object-reference 。在 Java 中,您永远无法直接访问对象。您只能通过对象引用来访问对象。对象引用类似于(但不相同)内存地址。所有对象引用都具有相同的大小(或最大可能大小),无论它们引用的对象的大小如何。如果您的 setPrev 方法是

void setPrev(Node p) {
this.prev = p;
}

更改对象引用 this.prev 以引用(指向)与 the object-reference p 相同的对象。它不会p引用的对象复制到this对象中。

关于java - JVM 如何为对象分配内存,尽管它们以后可能会增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53203194/

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