2016-11-03 6 views
11

का उपयोग करके मुझे पता है कि इसके बारे में 2-3 विषय हैं, FinalizerReference के साथ समस्याएं थीं, लेकिन यह अभी भी अच्छी तरह से समझाया नहीं गया है। मेरे पास इस वर्ग के बारे में एक प्रश्न है और इसमें चीजें कैसे काम करती हैं।एंड्रॉइड फ़ाइनलाइज़र रेफरेंस 7 एमबी रैम

कोई फर्क नहीं पड़ता कि मैं क्या मेरे एप्लिकेशन में करते हैं, FinalizerReference हमेशा 5-10 RAM खुद के लिए रखने के लिए, और मेरे सवाल यह है:

यह एक सामान्य व्यवहार है कि मैं के बारे में चिंता करने की जरूरत नहीं है?

जैसा कि मुझे पता है, जावा ऑब्जेक्ट्स मुक्त हैं, लेकिन 'पॉइंटर्स' स्मृति में रहते हैं और उन्हें अगले जीसी (साथ ही जीसी के साथ साफ सामान्य वस्तुओं के साथ साफ किया जाता है) के साथ साफ किया जाता है।

मेरे लिए, यह थोड़ा गलत है, क्योंकि यदि मेरे पास मेरे आवेदन के साथ उपयोग करने के लिए ~ 64 एमबी रैम है और 10 एमबी बर्बाद हो गई है - वहां कोई समस्या होनी चाहिए।

मैंने इसे सभी चेक किया, मेरे पास सभी लीक हटा दिए और वर्तमान में मेरा ऐप सिर्फ 18 ~ एमबी रैम (7 रैम - ग्राफिक्स, 2 रैम - ऑब्जेक्ट्स) पर रहता है। enter image description here

यहाँ एक स्क्रीन है यह उदाहरणों है से: - बाकी FinalizerReference/

यहाँ AppHeap से एक स्क्रीनशॉट

enter image description here

और यहाँ मेरी स्मृति की निगरानी है (यह इस रूप में रहता है 30 मिनट के लिए):

enter image description here

इसके अलावा, 'इंस्टेंस' पैनल में, 50 कोड हैं जिनमें से 5 मेरे कोड और पुस्तकालयों का उपयोग करते हैं। InputManagers, पार्सल, प्रॉक्सी आदि

संपादित

यह Galaxy S5 पर होता है - बाकी हिस्सों से एंड्रॉयड है। एंड्रॉयड एम्युलेटर पर मैं ~ 2 एमबी FinalizerReference

उत्तर

1

मैं समस्या का समाधान नहीं है, लेकिन एक सलाह है कि मैं एक खाली परियोजना पर जांच होनी चाहिए मिला है।

साथ की कोशिश की:

  • एंड्रॉयड स्टूडियो विंडोज x32
  • एंड्रॉयड स्टूडियो विंडोज 64
  • IntelliJIDEA x32
  • IntelliJIDEA 64

इन सभी के FinalizerReference की 5-10 mb रखने के लिए कारण RAM अपने लिए, खाली और खाली खाली प्रोजेक्ट पर ECTS।

बस इस मुद्दे को अनदेखा करें और कोड लिखें।

1

से मैं FinalizerReference के साथ एक ही समस्या थी, केवल नेक्सस 5.

पर यहां Android के स्टूडियो से हीप डंप के स्क्रीनशॉट है। enter image description here

कुछ शोध के बाद, मुझे this टिप्पणी मिली है, जहां यह कहा गया है कि यह सिस्टम के कारण हो सकता है।

इसके अलावा, मैं ग्रहण के मेमोरी विश्लेषण उपकरण (मेट) है, जो साबित कर दिया है कि इतने सारे FinalizerReference वस्तुओं प्रणाली के हैं इस्तेमाल किया है।

और, एंड्रॉइड स्टूडियो के हीप डंप के रूप में यह बहुत मेमोरी पर कब्जा नहीं किया।

enter image description here

+0

मेरा मतलब सिस्टम है, क्योंकि इसके पास "सिस्टम क्लास" लिखा गया है और जितना मुझे पता है, इसका मतलब है कि एंड्रॉइड सिस्टम ने उस वर्ग को लोड किया है – hakobyanheghine

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