แอปพลิเคชันของเราเริ่มมีหน่วยความจำรั่วกะทันหัน ฉันทำซ้ำได้สำเร็จด้วยรหัสทดสอบต่อไปนี้ (DotNet 3.5 หรือ 4.5, Visual Studio 2013, Windows 7/8 64 บิต):
- XMLserializer ที่สร้างด้วยประเภทของคลาสใหม่ (แม้จะเป็นคลาสว่างก็ตาม)
วงวนขนาดใหญ่ สร้างชุดข้อมูลที่มีตารางข้อมูลหนึ่งตารางและคอลัมน์ข้อมูลหนึ่งคอลัมน์ นี่คือรหัส:
Imports System.Xml Imports System.Xml.Serialization Module Module1 Sub Main() Dim x As XmlSerializer x = New XmlSerializer(GetType(tClass)) ' needed for reproduce leak Dim ds As DataSet For i As Integer = 0 To 1000000 For j As Integer = 0 To 1000 ds = New DataSet ds.Tables.Add("tb1").Columns.Add("dssd") Next Next End Sub End Module Public Class tClass ' empty class End Class
แต่ฉันยังไม่รู้เหตุผล