Zamanla çok iş parçacığı oluşturan bir uygulamam var. Bellek kullanımının çalıştığı ve sonunda hafızanın tükeneceği kadar büyüdüğünü fark ettim. Ancak aynı kod, iş arkadaşımın ortamındaki belleğe sızmıyor. İkimiz de aynı .net versiyonumuz var. Sorunumu, iş arkadaşımın dizüstü bilgisayarında sızıntı yapmayan ancak dizüstü bilgisayarımda bulunan aşağıdaki örnek kodla yeniden üretebildim. Yukarıda çalıştırdığınızda.Net Bellek Sızıntısı Çok sayıda iş parçacığı oluştururken
public static void Main(string[] args)
{
Console.WriteLine("Version " + Environment.Version.ToString());
if (Environment.Is64BitProcess)
Console.WriteLine("64");
else
Console.WriteLine("32");
while(true)
{
Thread t = new Thread(() => { Thread.Sleep(1); });
t.IsBackground = true;
t.Start();
Thread.Sleep(1);
}
}
, bu Visual Studio 2012 projesi için hedef çerçevesi içinde
Version 4.0.30319.18063
32
aşağıdaki .net framework 4.5 olduğunu yazdırır. Ben 32 bit tercih işaretli ise proje programlanmış konfigürasyon
Project Properties -> Build
Platform target: Any CPU
Prefer 32-bit: checked
aşağıdaki bellek sızdırıyor, su almaması. bellek sızdırıyor
başka yapılandırma benim iş arkadaşımın dizüstü kaçak yapmaz benim laptop sızdırıyor
Project Properties -> Build
Platform target: x86
Prefer 32-bit: disabled
çıkan çalıştırılabilir olduğunu.
Bellek sızıntılarını bulmak için CLR Profiler kullanıyorum ancak sızıntı yapan hiçbir şey göstermiyor. Fakat windows kaynak monitöründe çalışma setinin yaklaşık 1 MB/sn arttığını görüyorum.
Bellek kullanımımın ortamımda 32 bitlik modda artmasına neden oluyor, ancak iş arkadaşım değil?
ben senin meslektaşı olarak (hiçbir sızıntı) aynı davranışı elde benim PC'de bu deneyin FWIW zaman. – Cameron
Ve iş arkadaşınız hangi sürümleri çalıştırıyor? –
[Umdh tool] 'u kullanmayı deneyin (https://msdn.microsoft.com/en-us/library/windows/hardware/ff560206%28v=vs.85%29.aspx) (32-bit'i yüklediğinizden emin olun) Tüm hafızayı kimin tahsis ettiğini görmek için Windows için Hata Ayıklama Araçları). Ayrıca, uyku yöntemini uyku modundan çıkarırsanız ne olur? – Cameron