मैंने सी # में एक लंबा टीसीपी कनेक्शन सॉकेट सर्वर लिखा था। मेरे सर्वर में स्मृति में स्पाइक होता है। मैंने डॉटनेट मेमोरी प्रोफाइलर (एक उपकरण) का उपयोग यह पता लगाने के लिए किया था कि मेमोरी लीक कहां है। मेमोरी प्रोफाइलर इंगित करता है कि निजी ढेर बहुत बड़ा है, और स्मृति नीचे की तरह कुछ है (संख्या असली नहीं है, मैं जो दिखाना चाहता हूं वह है जीसी 0 और जीसी 2 के छेद बहुत विशाल हैं, डेटा का आकार सामान्य है):जीसी छेद क्या हैं?
Managed heaps - 1,500,000KB
Normal heap - 1400,000KB
Generation #0 - 600,000KB
Data - 100,000KB
"Holes" - 500,000KB
Generation #1 - xxKB
Data - 0KB
"Holes" - xKB
Generation #2 - xxxxxxxxxxxxxKB
Data - 100,000KB
"Holes" - 700,000KB
Large heap - 131072KB
Large heap - 83KB
Overhead/unused - 130989KB
Overhead - 0KB
हाउवर, जीसी छेद क्या है? DotNet मेमोरी प्रोफाइलर के documention निश्चित "छेद":
"छेद" याद है कि दो आवंटित उदाहरणों के बीच अप्रयुक्त है प्रतिनिधित्व करते हैं। कचरा कलेक्टर में पिन किए गए उदाहरण या अनुकूलन के कारण, "छेद" प्रकट होता है जब ढेर पूरी तरह से कॉम्पैक्ट नहीं होता है।
क्या मैं जानना चाहता हूँ है:
- "छेद" दो आवंटित उदाहरणों में से किस तरह के बीच दिखाई देते हैं?
- किस तरह के उदाहरण पिन किए गए हैं?
- ढेर कैसे कॉम्पैक्ट करें?
मुझे उम्मीद है कि कोई इसे समझा सकता है।
मुझे संदेह है कि आलेख एक अलग प्रकार के छेद के बारे में है। – CodesInChaos
"" छेद "स्मृति आवंटित करता है जो दो आवंटित उदाहरणों के बीच उपयोग नहीं किया जाता है। कचरा कलेक्टर में पिन किए गए उदाहरण या अनुकूलन के कारण," छेद "तब दिखाई देता है जब ढेर पूरी तरह से कॉम्पैक्ट नहीं होता है।" [.NET मेमोरी प्रोफाइलर दस्तावेज़ीकरण से] (http://memprofiler.com/onlinedocs/default.htm?turl=managedheaps.htm) – CodesInChaos
इतने सारे लोग इस सवाल को ऊपर क्यों उठा रहे हैं? लेखक का सवाल स्पष्ट नहीं है। संपादन के आधार पर यह भी प्रकट होता है कि उसे पता नहीं है कि वह किस बारे में बात कर रहा है। –