我收到此错误,无法确定原因为何
我在32 GB RAM内存上使用Windows 8.1 64位
应用程序为32位,在任务管理器中仅使用约400 mb,在使用GC.GetTotalMemory(false)
如何调试此错误原因?
C#wpf .net 4.5应用程序
此处数据库中最大的压缩字符串数据(322 KB):http://www.monstermmorpg.com/reciprocal/zipped.txt
此处未压缩的最大数据字符串(4837 KB):http://www.monstermmorpg.com/reciprocal/unzipped.txt
这里解压缩字符串函数
private static string Un_GZip_String(string compressedText)
{
using (var memoryStream = new MemoryStream())
{
byte[] gZipBuffer = Convert.FromBase64String(compressedText);
int dataLength = BitConverter.ToInt32(gZipBuffer, 0);
memoryStream.Write(gZipBuffer, 4, gZipBuffer.Length - 4);
var buffer = new byte[dataLength];
memoryStream.Position = 0;
using (var gZipStream = new GZipStream(memoryStream, System.IO.Compression.CompressionMode.Decompress))
{
gZipStream.Read(buffer, 0, buffer.Length);
}
return Encoding.UTF8.GetString(buffer);
}
}
http://i.stack.imgur.com/fepMs.png
答案 0 :(得分:0)
我建议下载ANTS Performance Profiler:
http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/
它将确切地说明你为什么会得到内存不足的例外,并且有30天的免费试用 - 这应该是你有足够的时间来解决它。
正如有人在评论中所说,它可能是大型对象堆,因为它可能会很快失控。性能分析器会很快告诉您问题所在。