我正在使用队列和列表。
list对象添加了字符串,Queue对象写入了字节数组。
在我的开发PC上,这是一个四核,没有内存问题。
在我的测试电脑上,这是一个双核,应用程序退出,因为在运行大约8小时后出现内存异常。
我一直在使用JetBrains dotMemory分析器来尝试精确定位内存过载的位置。
我追踪了两个罪魁祸首,它告诉我一些字节(随着时间的推移会增加)不会从队列中释放出来,但队列数却为零。
同样适用于列表对象。它告诉我,已经添加到列表(并删除)的字符串尚未从内存中删除。
我正在使用.Net 4.0和C#。
我正在考虑设置容量和TrimAccess方法。我还读到使用框架的4.5将使这个问题消失。
虽然我设置了我的测试(这将需要几个小时才能运行),但我会先发制人说这不会给我我需要的解决方案,所以我也在这里提出问题/困境。
由于
我的字节队列代码是这样的:
Queue<byte[]> byteQueue = new Queue<byte[]>() //module declaration
//Somewhere in a function:
byte[] imageInBytes = //convert image to bytes
byteQueue.Enqueue(imageInBytes);
//Elsewhere in a a function:
byte[] retreivedBytes = byteQueue.dequeue();
//post byte array to a WCF service.