2012-10-06 29 views
7

को समायोजित कर सकती है मुझे 10,000 x 30,000 वर्ण लिखने की आवश्यकता है। क्या एक स्ट्रिंगबिल्डर सभी पात्रों को एन्कोड करने में सक्षम होगा या क्या मुझे स्ट्रिंगबिल्डर की सरणी के बारे में सोचना चाहिए? मेरे पास परीक्षण मामलों तक पहुंच नहीं है, इसलिए मैं इसे स्वयं सत्यापित नहीं कर सकता। आशा है कि मुझे यहां जवाब मिलेगा।अक्षरों की अधिकतम संख्या स्ट्रिंगबिल्डर

अग्रिम धन्यवाद।

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

मैं एक पाश का उपयोग कर 10000 x 30000 वर्ण जोड़ने की कोशिश की। मुझे निम्नलिखित अपवाद मिलते हैं।

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 
at java.util.Arrays.copyOf(Arrays.java:2367) 
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:130) 
at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:114) 
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:415) 
at java.lang.StringBuilder.append(StringBuilder.java:132) 
at Test.main(Test.java:19) 

इस "जावा हीप स्पेस" के साथ क्या करना है?

उत्तर

14

लंबाई एक int है इसलिए इसे 2 जीएचएचआर (4 जीबी) तक रखना चाहिए जिसमें आपको स्मृति है। आप "केवल" 600 एमबी (300 मिलियन @ 2 बाइट प्रति चरित्र) का उपयोग करने जा रहे हैं। बस सावधान रहें कि आप कितनी प्रतियां बनाते हैं ... यानी toString()।

+0

मैंने लूप का उपयोग करके 10000x30000 वर्ण जोड़ने की कोशिश की और यह त्रुटियां देता है। कृपया संपादन देखें। –

+2

आपको '-Xms1024m -Xmx1536m' कमांड लाइन विकल्प के साथ वीएम में उपलब्ध ढेर स्थान को बढ़ाने की आवश्यकता है, जो प्रारंभिक आवंटन को 1 जीबी और अधिकतम 1.5 जीबी तक सेट करेगा। यदि आप 32-बिट वातावरण में चल रहे हैं तो यह समस्याग्रस्त हो सकता है। –

3

आपको अधिकतम ढेर आकार के बारे में चिंता करने की आवश्यकता है। यह कोई फर्क नहीं पड़ता है कि आप सिंगल या एकाधिक स्ट्रिंगबिल्डर ऑब्जेक्ट्स का उपयोग करते हैं या नहीं।

1

जब तक स्ट्रिंग बिल्डर में वर्णित वर्ण अनुक्रम की लंबाई क्षमता से अधिक न हो, तो एक नया आंतरिक बफर आवंटित करना आवश्यक नहीं है। यदि आंतरिक बफर ओवरफ़्लो होता है, तो यह स्वचालित रूप से बड़ा हो जाता है। और यह आपको इस स्ट्रिंगबिल्डर उदाहरण स्मृति को इस समय पकड़ने की अधिकतम संख्या देता है।

संबंधित मुद्दे