2015-11-12 3 views
14

के माध्यम से संभावित मेमोरी रिसाव मेरे पास एक छोटा एंड्रॉइड ऐप है और मैंने मेमोरी लीक की तलाश करने की कोशिश की, इसलिए मैंने 'डंप जावा हीप' पर क्लिक किया और सूची में पहली श्रेणी FinalizerReference (java.lang.ref) है। इसमें 500 से अधिक उदाहरण हैं, प्रत्येक एक 'अंतिम' और 'prev' के साथ एक और फ़ाइनलज़र संदर्भ में।FinalizerReference

मुझे पता है कि FinalizerRference ऐसी ऑब्जेक्ट्स से आता है जो Object.finalize() को लागू करते हैं, लेकिन मेरे पास मेरे ऐप में कोई ऑब्जेक्ट नहीं है जो इसे लागू करता है। मैं कैसे पता लगा सकता हूं कि यह रिसाव क्यों होता है और इसे ठीक करता है?

enter image description here

+0

आप OutOfMemoryErrors सामना कर रहे हैं, या आप बस पर शक कर रहे हैं कि वहाँ क्योंकि FinalizerReference उदाहरणों में से एक स्मृति रिसाव हो सकता है? – 1615903

+0

@ 1615903 बस संदेह .. – amitooshacham

+1

तो आपको अभी तक कोई समस्या नहीं है। कक्षाएं अंतिम रूप देने के हकदार हैं, और इसलिए लंबित अंतिम रूप देने के लिए। उन समस्याओं को हल न करें जो अभी तक मौजूद नहीं हैं। – EJP

उत्तर

2

अपनी समस्या के बारे में अधिक जानकारी के लिए, अपने Finalizer की दिग्दर्शन फ़ील्ड को देखें। फ़ाइनलाइज़र ऑब्जेक्ट्स अभी Reference एस बढ़ाए गए हैं, ताकि आप सामग्री की जांच कर सकें। यह आपको अंतिम वस्तुओं के बारे में जानकारी देगा।

सामग्री के आधार पर, आपके पास नई लीड होगी। यह संभव है कि लंबित वस्तुओं के लिए अंतिमकरण प्रक्रिया बहुत लंबी है। चूंकि आपके पास केवल एक थ्रेड प्रसंस्करण है, आप किसी भी तरह से आप को अधिक से अधिक अंतिम रूप दे सकते हैं।

चीयर्स