तो मैं MAT
है कि मैं हर surfaceCreate
मैं इस एंड्रॉइड मेमोरी रिसाव को थ्रेड से कैसे ठीक कर सकता हूं?
मुझे लगता है कि मैं इन धागों की जरूरत है, हालांकि साथ कई Threads
बनाने रखने के साथ, मिल गया है, लेकिन यदि कोई उपयोगकर्ता मेरी एप्लिकेशन के माध्यम से नेविगेट के रूप में इस विधि, ViewThread
के कई उदाहरण का कारण बनता है, जो एक स्मृति रिसाव है।
मैं अपने धागे बनाए और प्रबंधित किए जाने के तरीके को पुनर्गठित कैसे कर सकता हूं ताकि ऐसा न हो, या मैं रिसाव को रोकने से कैसे रोक सकता हूं?
@Override
public void surfaceCreated(SurfaceHolder holder) {
loading=false;
if (!mThread.isAlive()){
mThread = new ViewThread(this);
mThread.setMenuRunning(true);
mThread.start();
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if (mThread.isAlive()){
mThread.setMenuRunning(false);
}
}
मैं खोला और मेरे खेल के Career
गतिविधि से दूर नेविगेट पांच बार, और यह क्या MAT
संपादित करें पर दिखाई देता है है: के बाद से पाया गया कि के आधार पर मैंने मेरे धागे के विनाश के लिए surfaceDestroyed
अविश्वसनीय है। अब मैं एक अलग विधि से उचित थ्रेड-नष्ट करने वाली कॉल को कॉल करता हूं, ट्रिगर करता हूं।
मैंने इसे आजमाया, और उन कई उदाहरणों को मेरी कक्षा अभी भी पिलिंग कर रही है। – Houseman
उस स्थिति में आप जीसी जड़ों से वस्तुओं को ऑब्जेक्ट्स में पथ खोजने के लिए MAT का उपयोग कर सकते हैं। आपको शायद श्रोता/पर्यवेक्षक या कुछ में कहीं और संदर्भ मिलेगा। यह एक अज्ञात भीतरी कक्षा हो सकती है। इस मामले में कक्षा के उदाहरण के लिए कमजोर पड़ने के साथ स्थिर वर्गों का उपयोग करने का प्रयास करें। जैसे ही जीसी चलता है, यह लिंक तोड़ देगा। आप उचित पल में श्रोता को मैन्युअल रूप से अपंजीकृत करने का भी प्रयास कर सकते हैं। यदि यह काम नहीं करता है तो क्या आप जीसी जड़ों के पथ दिखाते हुए मैट का एक स्क्रीनशॉट साझा कर सकते हैं? – nickmartens1980