2010-05-29 8 views
11

ढेर में संग्रहीत सभी वस्तुओं को सूचीबद्ध करना संभव है। मैं कुछ इस तरह करना चाहते हैं:नेट में सभी प्रबंधित ऑब्जेक्ट्स को ढेर में कैसे सूचीबद्ध करें .Net?

IEnumerable<GCHandle> listOfObjectsInHeap = GetListOfObjectsFromHeap(); 
+2

आप ऐसा क्यों करना चाहते हैं? आप इस जानकारी के साथ क्या करना चाहते हैं? – luke

उत्तर

4

आप इसे प्राप्त करने के लिए Profiling API का उपयोग कर सकते हैं। दुर्भाग्य से प्रबंधित कोड में नहीं।

2

मैं किसी भी कामयाब समारोह है कि आप ऐसा करने की अनुमति देता है के बारे में पता नहीं कर रहा हूँ। आप HeapWalk फ़ंक्शन का उपयोग करके इस जानकारी को पुनर्प्राप्त कर सकते हैं। Here's an example इसका उपयोग करने के लिए (यह एक नया ढेर बनाता है लेकिन आप वर्तमान प्रक्रिया ढेर को GetProcessHeap के साथ पुनर्प्राप्त कर सकते हैं)।

4

क्लैमएमडी लाइब्रेरी का उपयोग करके आप अपनी प्रक्रिया से जुड़ सकते हैं और ढेर का निरीक्षण कर सकते हैं।

हालांकि, चलने वाली प्रक्रिया के खिलाफ क्लैमएमडी का उपयोग करना उपलब्ध जानकारी को सीमित करने के लिए जाना जाता है क्योंकि ढेर के रूप में आप इसे चलने की कोशिश कर रहे हैं।

http://blogs.msdn.com/b/dotnet/archive/2013/05/01/net-crash-dump-and-live-process-inspection.aspx

+0

यह करने का सबसे अच्छा तरीका है। –

संबंधित मुद्दे