早上好,
我有一个包含以下静态数组的类:
public static ResultObject[] ResultArray = new ResultObject[500];
在我的程序中,这个类有1200万个实例都添加到这个数组中。我得到一个OutOfMemoryException,并认为这可能是原因。
有没有什么方法可以更好地管理这个数组使用的内存,所以我不会得到这个异常?如果没有,哪个更快,写入文件或数据库?
我更愿意将这些数据保存在内存中,但如果这是我的问题的原因,那么我将不得不尝试别的东西。
谢谢!
答案 0 :(得分:0)
这可能不是您问题的直接答案,但是您认为包含静态数组而不是数组本身的类的1200万个实例可能会导致此内存问题吗?
在尝试优化之前,我要做的第一件事就是绝对确定问题的原因。
在确定如何优化内存分析器之前,请使用内存分析器并确定内存问题的原因。当您进行调查以发现真正的原因可能并不总是您所期望的时候,您会感到惊讶。
您可以使用CLR profiler或商业资讯分析器的试用版,例如ANTS(至少可以开始)。
答案 1 :(得分:0)
如果ResultObject是静态的,那么 只应该有一个实例,即使你有数百万个类的实例。正如其他人所建议的那样,仔细检查内存问题是否是由您班级中的其他内容引起的。
如果您确定内存问题与ResultObject有关,请仔细检查您正在使用此类进行的操作。例如,对于这1200万个实例中的每一个,您是否正在做任何可能导致生成ResultObject副本的事情?