क्या कोई मुझे सीएलआर की "हाईफ्रीक्वेंसी हेप" समझा सकता है?उच्च आवृत्ति ढेर
उत्तर
हर स्थिर चर ढेर पर संग्रहीत किया जाता है, चाहे वह एक संदर्भ प्रकार या एक मान प्रकार के भीतर घोषित है की परवाह किए बिना। कुल मिलाकर केवल एक स्लॉट है चाहे कोई भी उदाहरण बनाया गया हो। (वहाँ के लिए मौजूद हालांकि कि एक स्लॉट के लिए बनाए गए किसी भी उदाहरणों होने की जरूरत नहीं है।) ध्यान दें कि इस ढेर सामान्य कचरा एकत्र ढेर से अलग है - यह एक "उच्च आवृत्ति ढेर" के रूप में जाना जाता है, और वहाँ है एक प्रति आवेदन डोमेन।
here से चोरी हो गया।
उच्च आवृत्ति ढेर का उपयोग आमतौर पर उपयोग की जाने वाली आंतरिक डेटा संरचनाओं जैसे प्रकार की विधि तालिका को संग्रहीत करने के लिए किया जाता है। यह नीचे दिखाए गए अनुसार WinDbg/SOS का उपयोग करके सत्यापित किया जा सकता है।
यह SSCLI book (पृष्ठ 235) में भी कहा गया है।
यहाँ के लिए !eeheap
--------------------------------------
Domain 1: 006428c0
LowFrequencyHeap: 00340000(2000:2000) Size: 0x2000 (8192) bytes.
HighFrequencyHeap: 00342000(8000:2000) Size: 0x2000 (8192) bytes.
StubHeap: Size: 0x0 (0) bytes.
Virtual Call Stub Heap:
IndcellHeap: Size: 0x0 (0) bytes.
LookupHeap: Size: 0x0 (0) bytes.
ResolveHeap: Size: 0x0 (0) bytes.
DispatchHeap: Size: 0x0 (0) bytes.
CacheEntryHeap: Size: 0x0 (0) bytes.
Total size: Size: 0x4000 (16384) bytes.
--------------------------------------
Jit code heap:
LoaderCodeHeap: 004e0000(10000:1000) Size: 0x1000 (4096) bytes.
Total size: Size: 0x1000 (4096) bytes.
--------------------------------------
Module Thunk heaps:
Module 5ef21000: Size: 0x0 (0) bytes.
Module 00342e9c: Size: 0x0 (0) bytes.
Total size: Size: 0x0 (0) bytes.
--------------------------------------
Module Lookup Table heaps:
Module 5ef21000: Size: 0x0 (0) bytes.
Module 00342e9c: Size: 0x0 (0) bytes.
Total size: Size: 0x0 (0) bytes.
--------------------------------------
Total LoaderHeap size: Size: 0x13000 (77824) bytes.
=======================================
Number of GC Heaps: 1
generation 0 starts at 0x02521018
generation 1 starts at 0x0252100c
generation 2 starts at 0x02521000
ephemeral segment allocation context: none
segment begin allocated size
02520000 02521000 0252e010 0xd010(53264)
Large object heap starts at 0x03521000
segment begin allocated size
03520000 03521000 03523250 0x2250(8784)
Total Size: Size: 0xf260 (62048) bytes.
------------------------------
GC Heap Size: Size: 0xf260 (62048) bytes.
सूचना उच्च आवृत्ति ढेर के स्थान और कचरा एकत्र ढेर उत्पादन का हिस्सा है। Program
के स्थिर आवंटित उदाहरण के लिए !dumpobject
के लिए आउटपुट यहां दिया गया है।
0:000> !dumpheap -type Program
Address MT Size
0252b630 00343858 12
total 0 objects
Statistics:
MT Count TotalSize Class Name
00343858 1 12 TestBench2010.Program
Total 1 objects
0:000> !do 0252b630
Name: TestBench2010.Program
MethodTable: 00343858
EEClass: 0034154c
Size: 12(0xc) bytes
File: C:\workspaces\TestBench2010\TestBench2010\bin\Debug\TestBench2010.exe
Fields:
MT Field Offset Type VT Attr Value Name
00343858 4000001 4 ...Bench2010.Program 0 static 0252b630 p
0:000> !dumpheap -type Program
Address MT Size
0252b630 00343858 12
total 0 objects
Statistics:
MT Count TotalSize Class Name
00343858 1 12 TestBench2010.Program
Total 1 objects
0:000> !do 0252b630
Name: TestBench2010.Program
MethodTable: 00343858
EEClass: 0034154c
Size: 12(0xc) bytes
File: C:\workspaces\TestBench2010\TestBench2010\bin\Debug\TestBench2010.exe
Fields:
MT Field Offset Type VT Attr Value Name
00343858 4000001 4 ...Bench2010.Program 0 static 0252b630 p
सूचना प्रकार Program
में स्थिर संदर्भ p
के लिए पता। यह कचरा इकट्ठा कचरा में एक पते को इंगित करता है। साथ ही, विधि तालिका का पता नोटिस करें। यह उच्च आवृत्ति ढेर में एक पते को इंगित करता है।
विभिन्न "लोडर ढेर" का एक अच्छा अवलोकन है, जिसमें उच्च आवृत्ति ढेर एक उदाहरण है, इस excellent MSDN article on .Net runtime internals में।
उस लेख से:
MethodTables की तरह बार-बार पहुँचा कलाकृतियों, MethodDescs, FieldDescs, और इंटरफ़ेस मैप्स एक HighFrequencyHeap पर, आवंटित हो, जबकि इस तरह के EEClass और classloader और उसके देखने तालिकाओं के रूप में कम बार पहुँचा डेटा संरचनाओं,, LowFrequencyHeap पर आवंटित करें। StubHeap मेजबान स्टब्स है जो कोड एक्सेस सुरक्षा (सीएएस), COM wrapper कॉल, और पी/Invoke की सुविधा प्रदान करता है।
लिंक मर चुका है: - \ – Vlad
उह, क्यों एमएस लेख यूआरएल का इलाज कर सकता है जैसे कि स्थायी संसाधनों के रूप में उनका इलाज किया जाना चाहिए। क्या वे कभी सीखेंगे? इंटरनेट पुरालेख के लिए फिक्स्ड धन्यवाद। कृपया दान पर विचार करें! www.archive.org – codekaizen
या शायद [यह] (http://download.microsoft.com/download/3/a/7/3a7fa450-1f33-41f7-9e6d-3aa95b5a6aea/MSDNMagazineMay2005en-us.chm) (चेतावनी:। सीएम अंदर)। – Vlad
उच्च आवृत्ति ढेर का बिंदु यह है कि ऑब्जेक्ट्स जिन्हें अक्सर एक्सेस किया जाएगा, एक-दूसरे के करीब संग्रहित होते हैं। यह प्रक्रिया के कामकाजी सेट को कम करता है।
सीएलआर के मामले में, यह वास्तव में सही नहीं है, वैसे भी। – codekaizen
कोडेकाइज़न: इसका कौन सा हिस्सा सही नहीं लगता है? – Gabe
- 1. डब्ल्यूसीएफ उच्च आवृत्ति गिनती: कोई नकारात्मक दुष्प्रभाव जानता है?
- 2. स्कैला - स्थानीय ढेर में बड़ी संख्या में फ़ाइलों पर XML.loadFile प्रदर्शन करते समय उच्च ढेर उपयोग
- 3. आवृत्ति
- 4. ढेर ढेर और ढेर
- 5. ढेर और ढेर आवंटन
- 6. संचयी आवृत्ति
- 7. ढेर
- 8. ढेर
- 9. ढेर
- 10. विंडोज असेंबली ढेर और ढेर?
- 11. नेट ढेर बनाम विंडोज ढेर
- 12. PHP उच्च स्मृति समस्या
- 13. संचयी आवृत्ति और सापेक्ष आवृत्ति के साथ आर में आवृत्ति तालिका कैसे उत्पन्न करें
- 14. NAudio आवृत्ति बैंड तीव्रता
- 15. copyWithZone सेटिंग आवृत्ति चर?
- 16. प्लॉट भारित आवृत्ति मैट्रिक्स
- 17. निर्धारण शब्द आवृत्ति
- 18. पायथन आवृत्ति पहचान
- 19. पेपैल CreateRecurringPaymentsProfile बिलिंग आवृत्ति
- 20. एक ढेर और ढेर क्यों है?
- 21. सी ++ में उचित ढेर और ढेर उपयोग?
- 22. जावा ढेर और ढेर स्मृति आवंटन
- 23. सी # structs/वर्ग ढेर/ढेर नियंत्रण?
- 24. सी चर और ढेर चर ढेर ++
- 25. ढेर वास्तव में एक ढेर है?
- 26. ढेर और ढेर पर स्मृति स्थान पैटर्न
- 27. क्यूटी - मुख्य विजेट - ढेर या ढेर?
- 28. सी ++ ढेर और ढेर पर स्मृति आवंटित?
- 29. उच्च उपलब्धता
- 30. उच्च-थ्रूपुट
आपका मतलब है कि कचरा कलेक्टर स्थिर चर के साथ काम नहीं कर रहा है? तो यह स्मृति से कैसे निपट सकता है? – Vikram
तो स्थैतिक वर्ग और स्थैतिक चर या विधि के बीच क्या अंतर है? – Vikram
स्थैतिक चर के पूरे बिंदु यह है कि वे एपडोमेन के जीवनकाल के लिए मौजूद हैं, इसलिए परिभाषा के अनुसार वे कभी कचरा नहीं एकत्र करेंगे - कम से कम तब तक जब तक एपडोमेन/प्रक्रिया निकल न जाए। स्थिर वर्गों, स्थिर विधियों और स्थैतिक चर के बीच अलग-अलग के लिए, वे पूरी तरह से अलग हैं और अंतर सी # 101 है।स्टेटिक वैरिएबल "क्लास लेवल" हैं - चर का एक उदाहरण एपडोमेन में बनाया गया है, जो उस वर्ग के अनुसार स्कॉप्ड किया गया है। स्टेटिक विधियां कक्षा में विधियां हैं जिन्हें किसी उदाहरण पर कॉल करने की आवश्यकता नहीं है - वे मूल रूप से हैं वैश्विक कार्य –