对象引用 - 什么需要更多空间?

Object reference - What needs more space?

所以我和一个熟人打赌了。这是关于 space 在 Java.

的开发中需要更多的东西
ArrayList<Player>

在使用 Bukkit (Minecraft) API 进行编码时,玩家包括一个位置、一个库存、一个健康栏、一个食物级别、一个 xplevel 等等。但是,字符串只是字符的汇编。 这就是为什么我认为

ArrayList<String>

如果你只需要玩家的名字,这比包含玩家的 ArrayList 更令人愉快。

我的熟人告诉我有关对象引用的信息,这意味着它与我通过执行

获得玩家的名字完全一样
player.getName();

并且由于 "object reference" 的东西,不会再占用 space 或处理能力。

哪个论点是正确的?

假设您在内存中的其他地方有 Player 个实例 已经 并且您将添加那些 现有 对象到这个列表,那么它会得出同样的结果:两者都是对象引用列表(指向 StringPlayer)。对象引用很小(see this answer for details,但我们说的是 32 位或 64 位)。这里的关键是如果你已经Player个实例,添加对它们的第二个引用是便宜的;它不会创建对象的 copy,只是引用的副本,它很小。

当然,如果您没有, 已经有 Player 个实例并且会仅为此列表创建它们,这些实例将包括名称以及其他信息,那当然会占用更多内存。