मेरी जावा कोड, मैं अमरूद के मल्टीमैप (com.google.common.collect.Multimap) का उपयोग कर रहा में इस का उपयोग करते हुए:मल्टीमैप अंतरिक्ष मुद्दा: अमरूद
Multimap<Integer, Integer> Index = HashMultimap.create()
यहाँ, मल्टीमैप कुंजी एक यूआरएल के कुछ हिस्से और मूल्य यूआरएल के एक अन्य भाग है (एक पूर्णांक में परिवर्तित)। अब, मैं अपना जेवीएम 2560 एमबी (2.5 जीबी) हीप स्पेस (एक्सएमएक्स और एक्सएमएस का उपयोग करके) असाइन करता हूं। हालांकि, यह केवल पूर्णांक के 9 लाख (कुंजी, मूल्य) जोड़े (लगभग 10 मिलियन) स्टोर कर सकता है। लेकिन, सैद्धांतिक रूप से (स्मृति के अनुसार int
पर कब्जा कर लिया गया) इसे और अधिक स्टोर करना चाहिए।
किसी को भी मेरी मदद कर सकते,
- क्यों
Multimap
स्मृति के बहुत सारे उपयोग कर रहा है? मैंने अपना कोड चेक किया और जोड़े कोMultimap
में डाले बिना, यह केवल 1/2 एमबी मेमोरी का उपयोग करता है। 2.
वहाँ एक और तरीका है या घर में पके हुए समाधान इस स्मृति मुद्दे को हल करने के लिए है? मतलब, क्या उन ऑब्जेक्ट ओवरहेड्स को कम करने का कोई तरीका है क्योंकि मैं केवल इंट-इंट स्टोर करना चाहता हूं? किसी अन्य भाषा में? या किसी भी अन्य समाधान (घर-बेक्ड पसंदीदा) को हल करने के लिए मुझे सामना करने के लिए, डीबी आधारित या उस समाधान की तरह कुछ मतलब है।
क्या आपने "सैद्धांतिक" आकार को काम करते समय ऑब्जेक्ट ओवरहेड खाते में लिया था? आप इंटीजर का उपयोग कर रहे हैं, int नहीं ... –
@ जोन्स स्केट, मैं वास्तव में माफी चाहता हूँ। धन्यवाद। – Arpssss
कोई समस्या नहीं - और निश्चित रूप से आप * जावा में जेनेरिक प्रकार तर्क के रूप में * int' का उपयोग नहीं कर सकते हैं। आप शायद ओवरहेड से बचने के लिए int multapap को समर्पित int चाहते हैं :( –