क्या BigDecimal
द्वारा खपत की गई स्मृति की मात्रा का अनुमान लगाने के लिए कोई दिशानिर्देश है?जावा बिगडिमल स्मृति उपयोग?
String
स्मृति उपयोग का आकलन करने के लिए इन guidelines के समान कुछ ढूंढ रहे हैं।
क्या BigDecimal
द्वारा खपत की गई स्मृति की मात्रा का अनुमान लगाने के लिए कोई दिशानिर्देश है?जावा बिगडिमल स्मृति उपयोग?
String
स्मृति उपयोग का आकलन करने के लिए इन guidelines के समान कुछ ढूंढ रहे हैं।
आप BigDecimal के लिए स्रोत में फ़ील्ड को देखें, तो वहाँ है:
BigDecimal:
long intCompact +8 bytes
int precision +4 bytes
int scale +4 bytes
String stringCache +?
BigInteger intVal +?
BigInteger:
int bitCount +4 bytes
int bitLength +4 bytes
int firstNonzeroIntNum +4 bytes
int lowestSetBit +4 bytes
int signum +4 bytes
int[] mag +?
stringCache के लिए टिप्पणी "प्रामाणिक स्ट्रिंग प्रतिनिधित्व स्टोर करने के लिए प्रयोग किया जाता है, यदि गणना की।" है, इसलिए यह सोचते हैं कि आप डॉन ' टी कॉल करने के लिए हम इसे शून्य बाइट्स के रूप में छोड़ देंगे, इसलिए कुल मिलाकर (8 + 4 + 4) = 16 बाइट्स + BigDteger BigDecimal में और बिगइंटर के लिए 4 + 4 + 4 + 4 + 4 = 20 बाइट्स + मैग हैं। तो कुल 36 बाइट्स और परिमाण। जहां तक मैं परिमाण बता सकता हूं हमेशा पूर्ण पूर्णांक का प्रतिनिधित्व करने के लिए आवश्यक बिट्स की न्यूनतम संख्या होती है, इसलिए एक संख्या के लिए इसे लॉग 2 (एन) बिट्स की आवश्यकता होगी, जिसे इनट्स में परिवर्तित किया जा सकता है। तो सामान्य रूप में आप के बारे में उपयोग करना चाहिए:
36 + Ceiling(log2(n)/8.0) bytes
(ध्यान दें कि यह तार करता, लेकिन यह आपको एक अच्छा सामान्य विचार देना चाहिए के लिए अपने उदाहरण कड़ी के रूप में अन्य वस्तु वर्णनकर्ता भूमि के ऊपर के किसी भी शामिल नहीं है।)
ध्यान रखें कि 'stringCache' और 'intVal' में संदर्भ पॉइंटर्स होंगे (jvm impl निर्भर 4 या 8 बाइट्स)। न्यूनतम 12byte ऑब्जेक्ट हेडर ओवरहेड ('BigInteger' और 'BigDecimal', int []) और आखिरकार 8byte ऑब्जेक्ट आकार (राउंड अप) को याद रखें। –
एस/सिलिंग/छत / – thisfred
यदि आप BigDecimal
के आंतरिक में खोदते हैं तो आप देखेंगे कि यह < = Long.MAX_VALUE
है, तो यह एक कॉम्पैक्ट प्रतिनिधित्व का उपयोग करता है। इसलिए, आपके द्वारा प्रतिनिधित्व किए जा रहे वास्तविक मूल्यों के आधार पर स्मृति उपयोग भिन्न हो सकता है।
कॉम्पैक्ट प्रतिनिधित्व क्या है? –
एक बड़े स्थिर के साथ बहुत कुछ। बेशक, 'स्ट्रिंग' की तरह, यह कार्यान्वयन निर्भर है। –
क्या आपने इसे पढ़ा था: http://www.javaworld.com/javaworld/javatips/jw-javatip130.html – PeterMmm