我有这样的代码:内存泄漏只
using (var memoryStream = new MemoryStream())
{
using (var streamWriter = new StreamWriter(memoryStream))
{
var list = new List<Actor>();
for (var i = 0; i < 1000000; i++)
{
list.Add(new Actor("lorem ipsum"));
}
using (var serializedContent = new MemoryStream())
{
streamWriter.WriteLine(JsonConvert.SerializeObject(list));
streamWriter.Flush();
serializedContent.Seek(0, SeekOrigin.Begin);
using (ZipFile zip = new ZipFile())
{
zip.AddEntry("message.txt", serializedContent);
zip.Save("Archive.zip");
}
}
}
}
while (true)
{
GC.Collect();
GC.WaitForPendingFinalizers();
GC.WaitForFullGCComplete();
GC.Collect();
Console.WriteLine("completed");
Console.ReadKey();
}
的问题是内存泄漏只出现在调试版本,而在它发布后,充分清洗自己。任何想法为什么会发生这种情况?
编辑。 我注意到问题消失,如果我删除那部分,我尝试将文件添加到zip压缩文件。调试版本与发行版本之间有什么区别?我看不到问题,因为归档部分在using
声明中执行。
演员的执行是什么?什么泄漏?你是否描述过它? –
Actor类有一个字符串变量保存它的名字,没有别的。 – martynaspikunas