处理对已创建对象的新引用的处理成本?

时间:2013-07-27 21:42:05

标签: java memory reference

我正在制作一款游戏,我需要告诉有多少辆汽车正在联系玩家的汽车,以及哪些汽车。我的计划是创建一个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秒钟,那么创建对同一辆车的新引用几乎是即时的?

提前致谢。

1 个答案:

答案 0 :(得分:2)

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

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

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