मेरे पास एक ऐसा एप्लिकेशन है जो समय के साथ बहुत सारे धागे बनाता है। मैंने देखा कि स्मृति उपयोग बढ़ता है क्योंकि यह चलता है और अंततः स्मृति से बाहर चला जाता है। लेकिन वही कोड मेरे सहकर्मी के पर्यावरण पर स्मृति को रिसाव नहीं करता है। हम दोनों के पास समान नेट संस्करण है। मैं इस मुद्दे को निम्नलिखित नमूना कोड के साथ पुन: उत्पन्न करने में सक्षम था जो मेरे सहकर्मी के लैपटॉप पर रिसाव नहीं करता है बल्कि मेरे लैपटॉप पर करता है।नेट मेमोरी लीक बहुत सारे थ्रेड बनाते समय
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);
}
}
जब मैं ऊपर चलाने के लिए, यह प्रिंट निम्नलिखित
Version 4.0.30319.18063
32
Visual Studio 2012 परियोजना के लिए लक्ष्य ढांचे में .NET Framework 4.5 है। परियोजना विन्यास
Project Properties -> Build
Platform target: Any CPU
Prefer 32-bit: checked
निम्नलिखित के साथ स्मृति लीक अगर मैं पसंद करते हैं 32-बिट अनचेक, यह लीक नहीं करता है।
एक और विन्यास कि स्मृति लीक
Project Properties -> Build
Platform target: x86
Prefer 32-bit: disabled
जिसके परिणामस्वरूप निष्पादन योग्य है कि मेरे लैपटॉप पर लीक मेरी सहकर्मी के लैपटॉप पर लीक नहीं करता है।
मैं मेमोरी लीक खोजने के लिए CLR प्रोफाइलर इस्तेमाल किया, लेकिन यह कुछ भी है कि लीक कर रहा है नहीं दिखाती है। लेकिन मुझे लगता है कि विंडोज संसाधन मॉनीटर में काम करने वाला सेट लगभग 1 एमबी/सेकेंड तक बढ़ता है।
क्या स्मृति उपयोग मेरी पर्यावरण पर 32-बिट मोड में वृद्धि करने के लिए नहीं बल्कि मेरे सहकर्मी का कारण है?
जब मैं अपने पीसी पर इस कोशिश FWIW मैं अपने सहकर्मी के रूप में (कोई रिसाव) एक ही व्यवहार मिलता है। – Cameron
और आपका सहकर्मी किस संस्करण को चलाता है? –
[umdh उपकरण] उपयोग करने का प्रयास (https://msdn.microsoft.com/en-us/library/windows/hardware/ff560206%28v=vs.85%29.aspx) (32-बिट स्थापित करने के लिए सुनिश्चित हो विंडोज़ के लिए डिबगिंग टूल्स) यह देखने के लिए कि सभी मेमोरी आवंटित कौन कर रहा है। इसके अलावा, क्या होता है यदि आप थ्रेड विधि के अंदर नींद को हटाते हैं? – Cameron