我有這樣的代碼:內存泄漏只
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