3

我正在制作一个游戏,我需要知道有多少汽车正在与玩家的汽车接触,以及哪些汽车。我的计划是创建一个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. 它快多少?如果创建一个新的需要 3 秒,那么创建Car对同一辆车的新引用几乎是瞬时的吗?

提前致谢。

4

1 回答 1

2

将引用从一个变量复制到另一个变量非常便宜。它可能与复制intorlong值一样便宜(取决于有关 JVM 的一些事情)。

您所拥有的只是两个具有完全相同值的变量 - 一个参考。该值将非常小(在大多数实现下为 4 或 8 个字节)并且复制它通常不需要比复制字节更多的努力。

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

于 2013-07-27T21:49:29.840 回答