gpt4 book ai didi

java - 对已创建对象进行新引用的处理成本?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:28:37 25 4
gpt4 key购买 nike

我正在制作一款游戏,我需要判断有多少辆汽车正在接触玩家的汽车,以及哪些汽车。我的计划是创建一个 List,并在必要时添加和删除汽车。

这是我的问题。我的 Car 类创建起来非常昂贵(处理能力方面)。创建一辆汽车的引用要花多少钱?我知道在 C++ 中我所说的被称为指针。这是代码示例:

Car newCar = new Car(); // expensive
Car carCopy = newCar.clone(); // expensive
Car referenceNewCar = newCar; // expensive?

referenceNewCar 应该指向内存中与 newCar 相同的位置,对吧?所以它不必初始化任何东西,并且说 newCar.changeMemberVariableTo(1)referenceNewCar.changeMemberVariableTo(1) 相同;无论哪种方式,newCarreferenceNewCar 都会受到影响,因为它们指向内存中的同一个位置。

我假设创建一个新的引用比一个全新的 Car 更便宜。它快多少?如果创建一个新的 Car 需要 3 秒,那么创建对同一辆车的新引用是否几乎是瞬间的?

提前致谢。

最佳答案

将引用从一个变量复制到另一个变量非常便宜。它可能与复制 intlong 值一样便宜(取决于所讨论的 JVM 的一些情况)。

您所得到的只是两个具有完全相同值的变量 - 一个引用。该值将非常小(在大多数实现中为 4 或 8 个字节)并且复制它通常不需要比复制字节更多的工作。

(我暗暗怀疑一些 JVM 可能比这更聪明一些;为了垃圾收集,一些 JVM 可能会更新最老一代的标志例如,对特定对象的引用 - 但这会因实现而异,无论如何我的内存可能是错误的。)

关于java - 对已创建对象进行新引用的处理成本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17902720/

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