您是否可以在C#中使用太多新实例来导致内存问题?

时间:2015-05-10 22:26:22

标签: c# memory xna instance

我正在用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#中的内存问题?如果是这样,那么有人会如何建议重新组织级别/敌人/项目创建以减少内存使用量?

2 个答案:

答案 0 :(得分:2)

单个实例的开销只有大约20个字节(对象中的引用和内部数据)。在内存中有数百个对象只会导致几千字节的开销,所以只创建这些实例本身不会成为问题。

因此,如果在内存中包含这些实例会导致任何问题,完全取决于每个对象中有多少数据。

答案 1 :(得分:0)

您可以使用process.workingset来获取进程内存使用情况。 https://msdn.microsoft.com/en-us/library/system.diagnostics.process.workingset.aspx