内部静态数组导致内存问题?还有哪些其他选择?

时间:2010-09-13 14:37:45

标签: c# memory-management

早上好,

我有一个包含以下静态数组的类:

public static ResultObject[] ResultArray = new ResultObject[500];

在我的程序中,这个类有1200万个实例都添加到这个数组中。我得到一个OutOfMemoryException,并认为这可能是原因。

有没有什么方法可以更好地管理这个数组使用的内存,所以我不会得到这个异常?如果没有,哪个更快,写入文件或数据库?

我更愿意将这些数据保存在内存中,但如果这是我的问题的原因,那么我将不得不尝试别的东西。

谢谢!

2 个答案:

答案 0 :(得分:0)

这可能不是您问题的直接答案,但是您认为包含静态数组而不是数组本身的类的1200万个实例可能会导致此内存问题吗?

在尝试优化之前,我要做的第一件事就是绝对确定问题的原因。

在确定如何优化内存分析器之前,请使用内存分析器并确定内存问题的原因。当您进行调查以发现真正的原因可能并不总是您所期望的时候,您会感到惊讶。

您可以使用CLR profiler或商业资讯分析器的试用版,例如ANTS(至少可以开始)。

答案 1 :(得分:0)

如果ResultObject是静态的,那么 只应该有一个实例,即使你有数百万个类的实例。正如其他人所建议的那样,仔细检查内存问题是否是由您班级中的其他内容引起的。

如果您确定内存问题与ResultObject有关,请仔细检查您正在使用此类进行的操作。例如,对于这1200万个实例中的每一个,您是否正在做任何可能导致生成ResultObject副本的事情?