का उपयोग करके मुझे पता है कि इसके बारे में 2-3 विषय हैं, FinalizerReference
के साथ समस्याएं थीं, लेकिन यह अभी भी अच्छी तरह से समझाया नहीं गया है। मेरे पास इस वर्ग के बारे में एक प्रश्न है और इसमें चीजें कैसे काम करती हैं।एंड्रॉइड फ़ाइनलाइज़र रेफरेंस 7 एमबी रैम
कोई फर्क नहीं पड़ता कि मैं क्या मेरे एप्लिकेशन में करते हैं, FinalizerReference
हमेशा 5-10 RAM
खुद के लिए रखने के लिए, और मेरे सवाल यह है:
यह एक सामान्य व्यवहार है कि मैं के बारे में चिंता करने की जरूरत नहीं है?
जैसा कि मुझे पता है, जावा ऑब्जेक्ट्स मुक्त हैं, लेकिन 'पॉइंटर्स' स्मृति में रहते हैं और उन्हें अगले जीसी (साथ ही जीसी के साथ साफ सामान्य वस्तुओं के साथ साफ किया जाता है) के साथ साफ किया जाता है।
मेरे लिए, यह थोड़ा गलत है, क्योंकि यदि मेरे पास मेरे आवेदन के साथ उपयोग करने के लिए ~ 64 एमबी रैम है और 10 एमबी बर्बाद हो गई है - वहां कोई समस्या होनी चाहिए।
मैंने इसे सभी चेक किया, मेरे पास सभी लीक हटा दिए और वर्तमान में मेरा ऐप सिर्फ 18 ~ एमबी रैम (7 रैम - ग्राफिक्स, 2 रैम - ऑब्जेक्ट्स) पर रहता है।
यहाँ एक स्क्रीन है यह उदाहरणों है से: - बाकी FinalizerReference
/
यहाँ AppHeap से एक स्क्रीनशॉट
और यहाँ मेरी स्मृति की निगरानी है (यह इस रूप में रहता है 30 मिनट के लिए):
इसके अलावा, 'इंस्टेंस' पैनल में, 50 कोड हैं जिनमें से 5 मेरे कोड और पुस्तकालयों का उपयोग करते हैं। InputManagers, पार्सल, प्रॉक्सी आदि
संपादित
यह Galaxy S5 पर होता है - बाकी हिस्सों से एंड्रॉयड है। एंड्रॉयड एम्युलेटर पर मैं ~ 2 एमबी FinalizerReference
मेरा मतलब सिस्टम है, क्योंकि इसके पास "सिस्टम क्लास" लिखा गया है और जितना मुझे पता है, इसका मतलब है कि एंड्रॉइड सिस्टम ने उस वर्ग को लोड किया है – hakobyanheghine