执行创建许多对象的导入过程时,我在System.OutOfMemoryException上苦苦挣扎。
这样的结果是ASPNET_WP.EXE的大小达到1.4 GB,并且将引发异常。
我已经尝试实现IDisposable并在该负责的函数中调用垃圾收集器(GC.Collect()),但没有效果。
该服务器是具有4 GB RAM的QuadCore(C2Q)。即使可用内存超过1,4 GB,当aspnet_wp.exe达到1.4 GB时,也会始终引发异常。
我该如何避免这些OutOfMemory问题?
确切的异常消息是:
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at
OpenAccessRuntime.DataObjects.PersistenceManagerFactoryBase.
CreatePersistenceMangerImp(StorageManger sm)
at
....
最佳答案
您可以分块导入吗,而不是快速创建大量对象并进行处理。
您可能需要详细说明正在发生的事情,您如何处理导入。
例如,您可以完全处理并保存每个对象,然后再处理另一个对象吗?
您可能需要获取内存分析器。以下是一些开源的c#分析器:
http://csharp-source.net/open-source/profilers
我会看两件事。
你能改变你的
算法来防止这种情况。
获取有关原因的更多信息
这正在发生。
关于c# - WCF Web服务上的System.OutOfMemoryException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1604611/