मैंने इसमें बहुत सारे डेटा के साथ एक वैरिएबल का उपयोग किया, कहते हैं String data
। मैं निम्नलिखित तरीके से इस स्ट्रिंग के एक छोटे हिस्से का उपयोग करना चाहता था:
this.smallpart = data.substring(12,18);
डिबगिंग के कुछ घंटों के बाद (एक मेमोरी विज़ुअलाइज़र के साथ) मुझे पता चला कि ऑब्जेक्ट फ़ील्ड smallpart
ने सभी डेटा को याद किया data
, हालांकि इसमें केवल सबस्ट्रिंग शामिल था।
जब मैंने कोड को इसमें बदला:
this.smallpart = data.substring(12,18)+"";
..समस्या का निदान हो गया था! अब मेरा आवेदन अब बहुत कम मेमोरी का उपयोग करता है!
वो कैसे संभव है? क्या कोई इसे समझा सकता है? मुझे लगता है कि यह। डेटा, डेटा की ओर संदर्भित करता रहा, लेकिन क्यों?
अद्यतन: मैं फिर बड़ी स्ट्रिंग को कैसे साफ़ कर सकता हूँ? क्या डेटा = नया स्ट्रिंग (data.substring (0,100)) बात करेगा?
new String(String)
; देख stackoverflow.com/a/390854/8946 ।