Tuesday 15 February 2011

c# - Managed memory use of MemoryMappedFile.CreateViewStream() -


मेमोरीमैपफ़ाइल। क्रिएट वीवस्ट्रीम (0, लेन) आकार की मेमोरी का एक प्रबंधित ब्लॉक आवंटित करें लेनन , या वह छोटे बफर को आवंटित करेगा जो अप्रबंधित डेटा पर एक स्लाइडिंग विंडो के रूप में कार्य करता है?

मुझे आश्चर्य है क्योंकि मैं आज के लिए एक मध्यवर्ती बफर को बदलना चाहता हूं जो आज स्मृतिस्मृति है, जो कि मुझे बड़े डेटासेट के लिए परेशानी दे रही है, दोनों बफर के आकार के कारण और LOH विखंडन के कारण। संपादित करें:

यदि दृश्यस्ट्रीम के आंतरिक बफ़र एक ही आकार के होते हैं तो यह स्विच करने से मतलब नहीं होगा।

संपादित करें:

एक त्वरित परीक्षण मैंने मेमोरीस्ट्रीम मेमोरीमैप फ़ाइल में तुलना करते हुए ये नंबर पाया। जीसी। गेटटोटल मेमोरी (सच्चे) / 1024 और से प्रक्रियाएं। प्रक्रिया। गेटकंट्रंट प्रोसेस। आभासी स्मृतिसमित 64/1024

1 जीबी मेमोरी स्ट्रीम को आवंटित करें: < प्री क्लास = "लैंग-एफ़ नो प्रॉस्पेप प्रिंट-ओवरराइड"> प्रबंधित वर्चुअल इनिशियल: 81 केबी 190 896 केबी ऑलोक: 1 024 084 केबी 1 244 852 केबी <पी> के रूप में अपेक्षित, एक प्रबंधित और आभासी स्मृति दोनों के टमटम अब, मेमोरीमैपफ़ाइल के लिए:

  प्रबंधित वर्चुअल इनिशियल: 81 केबी 18 9 616 केबी एमएमएफ आवंटित: 84 केबी 18 9 684 केबी 1 जीबी दृश्यप्रदर्शन allocd: 84 केबी 1 213 368 केबी व्यूअरस्ट्रीम का निपटारा: 84 केबी 190 9 64 केबी   

तो न ही एक बहुत ही वैज्ञानिक परीक्षण का उपयोग करना, मेरा मानना ​​है कि व्यूस्ट्रीम केवल अप्रबंधित डेटा का उपयोग करता है। सही है?

ऐसा कोई एमएमएफ जिसने आपकी समस्या को हल नहीं किया है ओओएम पर एक प्रोग्राम बम क्योंकि आभासी मेमोरी स्पेस में आवंटन के लिए फिट होने के लिए काफी बड़ा छेद नहीं है। आप अभी भी एमएमएफ के साथ वीएम एड्रेस स्पेस का उपयोग कर रहे हैं, जैसा कि आप बता सकते हैं।

एक छोटे से स्लाइडिंग दृश्य का प्रयोग एक वैकल्पिक हल होगा, लेकिन यह किसी फ़ाइल को लिखने से अलग नहीं है जो वही है जो एमएमएफ करता है जब आप दृश्य को रीमाट करते हैं, तो उसे गंदा पृष्ठों को डिस्क पर फ्लश करना होगा। बस एक FileStream स्ट्रीमिंग उचित workaround है वह अभी भी रैम का उपयोग करता है, फ़ाइल सिस्टम कैश तेजी से लिखने में मदद करता है यदि आपके पास एक रैम की गीगाबाइट है, तो इन दिनों से आना मुश्किल नहीं है, फिर एक फाइलस्ट्रीम को लिखना एक स्मृति-टू-मेमरी कॉपी है बहुत तेज़, 5 गीगाबाइट / सेकंड और ऊपर फ़ाइल को पृष्ठभूमि में एक आलसी फैशन में लिखा जाता है।

स्मृति में डेटा रखने के लिए बहुत मेहनत की कोशिश करना विंडोज में अनुत्पादक है स्मृति में निजी डेटा को पृष्ठन फ़ाइल द्वारा समर्थित किया जाता है और उस फाइल में लिखा जाएगा जब Windows को अन्य प्रक्रियाओं के लिए RAM की आवश्यकता होगी। और फिर से पढ़ें जब आप इसे फिर से उपयोग करते हैं यह धीमा है, जितनी अधिक मेमोरी का आप उपयोग करते हैं, उतना बुरा होता है किसी भी मांग-पृष्ठांकित वर्चुअल स्मृति ऑपरेटिंग सिस्टम की तरह, डिस्क और मेमोरी के बीच का अंतर छोटा है।

No comments:

Post a Comment