gpt4 book ai didi

java - 仅包含静态字段的对象的内存使用情况

转载 作者:行者123 更新时间:2023-12-01 17:58:16 25 4
gpt4 key购买 nike

我目前正在用 Java 编写一个游戏,我正在尝试做出一些简单的设计决策,这些决策将从一开始就减少内存使用(以防止以后必须进行较大的更改以减少内存使用)。游戏的主要布局将是一个十六进制网格,我将使用 HashMap 来存储十六进制。每个条目将有一个 Point 对象,如下所示键,Hex 类型对象(Hex 是一个接口(interface))作为值。我将有两个实现 Hex 的不同对象; OceanHexLandHex

虽然 LandHex 将包含许多字段(建筑物、统计数据、当前位于图 block 上的玩家),但玩家将无法在海洋图 block 上进行构建或移动。本质上,它们只是为了美观。因此,OceanHex 将仅包含 2 个静态最终成员,从而使 OceanHex 的每个实例都相同。我最初计划通过仅实例化一个 OceanHex 实例并让每个海洋图 block 引用该实例来减少内存使用量,但这让我很好奇。由于 OceanHex 仅包含静态字段,许多 OceanHex 实例实际上会比单个实例使用更多内存吗?

一般来说,我的问题是:对于一个只包含静态字段的类,拥有多个对象实例是否会与拥有一个具有多个引用的对象实例占用相同的空间量?

我想象创建仅包含静态字段的类实例的情况很少见,但我仍然很好奇。

最佳答案

虽然每个实例都会使用内存,但在大多数机器上可以忽略不计(有关详细信息,请参阅 this question)。只有当您在非常有限的硬件上运行或打算拥有大量对象时,您才应该考虑引入复杂性(例如单例)以避免内存使用。我怀疑这对于游戏来说是否成立。首先选择简单、清晰的代码,然后在遇到问题时考虑优化资源。

如果您决定共享您的实例,我建议您查看 Flyweight Design Pattern了解实现细节。

关于java - 仅包含静态字段的对象的内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42915627/

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