follwing HashMap.clear()
कोड पर विचार करें:जावा हैश मैप.क्लियर() और हटाएं() मेमोरी प्रभावी है?
/**
* Removes all of the mappings from this map.
* The map will be empty after this call returns.
*/
public void clear() {
modCount++;
Entry[] tab = table;
for (int i = 0; i < tab.length; i++)
tab[i] = null;
size = 0;
}
ऐसा लगता है, कि Entry
वस्तुओं की आंतरिक सरणी (table
) shrinked कभी नहीं किया गया है। इसलिए, जब मैं मानचित्र में 10000 तत्व जोड़ता हूं, और उसके बाद map.clear()
पर कॉल करता है, तो यह 10000 नल को इसके आंतरिक सरणी में रखेगा। तो, मेरा सवाल यह है कि, JVM इस सरणी को कैसे संभालता है, और इस प्रकार, HashMap
मेमोरी प्रभावी है?
10,000 नल सभी 40 केबी (संभवतः 64 बिट जेवीएम पर 80) लेते हैं। –
@ माइकल, शायद, लेकिन यह अप्रासंगिक है: संख्या को किसी भी पैमाने पर विस्तारित किया जा सकता है। ओपी सिद्धांत के मामले पर पूछ रहा है। शायद नक्शा बड़ा है, शायद उपलब्ध स्मृति छोटी है। हमें पता नहीं। – corsiKa
मानचित्र में 10000 तत्व! = आंतरिक तालिका में 10000 प्रविष्टियां। कृपया जानें कि हैश मैप इत्यादि पहले कैसे काम करता है ... – james