कल मैं unordered_map का उपयोग करने की कोशिश की और इस कोड को मुझे उलझन में कितना स्मृति का उपयोग किया।std :: unordered_map बहुत ही उच्च स्मृति उपयोग
typedef list<string> entityId_list;
struct tile_content {
char cost;
entityId_list entities;
};
unordered_map<int, tile_content> hash_map;
for (size_t i = 0; i < 19200; i++) {
tile_content t;
t.cost = 1;
map[i] = t;
}
सभी कोड के इस भागों डिबग मोड में एमएस VS2010 में संकलित किया गया। जो मैंने अपने टास्क मैनेजर में देखा है वह लगभग 1200 केबी "साफ" प्रक्रिया थी, लेकिन हैश_मैप भरने के बाद यह 8124 केबी मेमोरी का उपयोग करता है। क्या यह unordered_map का सामान्य व्यवहार है? इतनी मेमोरी क्यों उपयोग की जाती है?
बस यह ध्यान रखना चाहता था कि एक अनियंत्रित नक्शा सैकड़ों मेगाबाइट तक रख सकता है, भले ही कोई आइटम अंदर संग्रहीत न हो (जब आप इटरेटर के माध्यम से मिटते हैं, क्योंकि यदि नक्शा पुनरावर्तक पुनरावर्तक हो जाता है) तो यह बग रिपोर्ट देखें (जैसा कि हो सकता है अच्छी तरह से माइक्रोसॉफ्ट कार्यान्वयन को प्रभावित नहीं करते हैं): https://svn.boost.org/trac/boost/ticket/11419 – GameDeveloper