डॉटट्रेस प्रदर्शन प्रोफाइलर का मतलब क्या है [कचरा संग्रह]?
इस तस्वीर में [कचरा संग्रहण] का क्या अर्थ है? और "20 कॉल" चीज?
मेरा मतलब है, मैं कैसे समझ सकता हूं कि जीसी इतनी देर क्यों ली? क्या यह बहुत छोटी वस्तुओं को इकट्ठा कर रहा था? एक बड़ा बड़ा? इस बारे में कोई संकेत है कि इसे कैसे अनुकूलित किया जाए?
कोड सवाल में है:
private void DeserializeFrom(SerializationInfo info)
{
Width = info.GetInt32("width");
Height = info.GetInt32("height");
var data = (List<byte>)info.GetValue("cells", typeof(List<byte>));
cells = new Cell[physicalSize.Width, physicalSize.Height];
int pos = 0;
for (int x = 0; x < physicalSize.Width; x++)
{
for (int y = 0; y < physicalSize.Height; y++)
{
cells[x, y] = new Cell();
if (x < Width && y < Height)
{
cells[x, y].HasCar = data[pos];
pos++;
}
}
}
}
कुछ नहीं भी फैंसी। मुझे संदेह है कि अपराधी बड़ा List<byte>
ऑब्जेक्ट है, लेकिन मैंने सोचा कि एकल, बड़े ऑब्जेक्ट को तत्काल माना जाना चाहिए (छोटी वस्तुओं के समूह को इकट्ठा करने के विपरीत)।
मुझे एहसास है कि यह कुछ महीने पुराना है, लेकिन मुझे लगता है कि यह बिल्कुल उल्लेखनीय है कि आप पूरी तरह से .NET कोड में मेमोरी लीक कर सकते हैं। स्टेटिक घटनाएं इसका एक बहुत ही आम कारण हैं। यदि आप एक क्षणिक स्थिति के साथ एक स्थिर घटना की सदस्यता लेते हैं और क्षणिक के सभी ज्ञात संदर्भों को जारी करने से पहले घटना से सदस्यता समाप्त करने में विफल रहते हैं, तो क्षणिक घटना से संदर्भ द्वारा क्षणिक को जीवित रखा जाएगा; कचरा कलेक्टर कभी इसे इकट्ठा नहीं करेगा। – Kelsie
@kelsie आप सही हैं और मैंने स्वयं को सही ढंग से व्यक्त नहीं किया है। आपके पास अप्रबंधित कोड के साथ प्रोग्राम करने के तरीके के संबंध में स्मृति रिसाव नहीं है, जहां किसी ऑब्जेक्ट को ठीक से डिलीकेट नहीं करना आसान था और मेमोरी रिसाव था। साथ ही, आप सही तरीके से इंगित करते हैं, घटनाएं एक ऐसा तरीका है जिसमें आप किसी ऑब्जेक्ट का संदर्भ रख सकते हैं ताकि इसे निपटान न किया जा सके। – xmorera
एलओएच में आवंटित किए गए सरणी के उपयोग में आपका आवेदन बहुत गहन था और यह देखते हुए कि आप LOH को कॉम्पैक्ट नहीं कर पाएंगे, इससे पहले कि आप मेमोरी अपवादों से बाहर निकल सकें, इससे पहले कि अन्य एप्लिकेशन बड़े ऑब्जेक्ट ढेर के साथ प्री 4.5 में था। – xmorera