我正在用C#和XNA 4.0创建游戏。它由多个级别组成,包括玩家角色,敌人,要收集的东西等。等级使用类似于以下的等级类创建。
List<Level> levels = new List<Level>(20); //This is a list to hold all of the levels (There are 20 levels in this example)
//This loop creates each level using a new instance of the class
for (int i = 0; i < levels.Capacity; i++)
{
levels.Add(new Level());
}
为了添加敌人等,我也使用Enemy和Item等类。它们以相同的方式创建。
List<Enemy> enemies = new List<Enemy>();
enemies.Add(new Enemy());
List<Item> items = new List<Item>();
items.Add(new Item());
游戏目前正在运行,但到完成时我将使用数百个新对象实例。可以使用太多新实例导致C#中的内存问题?如果是这样,那么有人会如何建议重新组织级别/敌人/项目创建以减少内存使用量?
答案 0 :(得分:2)
单个实例的开销只有大约20个字节(对象中的引用和内部数据)。在内存中有数百个对象只会导致几千字节的开销,所以只创建这些实例本身不会成为问题。
因此,如果在内存中包含这些实例会导致任何问题,完全取决于每个对象中有多少数据。
答案 1 :(得分:0)
您可以使用process.workingset来获取进程内存使用情况。 https://msdn.microsoft.com/en-us/library/system.diagnostics.process.workingset.aspx