Posts

Showing posts from January, 2018
এন্ড্রয়েড মেমোরি লিকঃ এন্ড্রয়েড এ মেমোরি লিক একটি কমন সমস্যা। আমরা সাধারানত এটা নিয়ে খুব বেশি চিন্তা করি না। কিন্তু আসলে এটা অ্যাপ্লিকেশান এর performance এ অনেক প্রভাব ফেলে। একজন এন্ড্রয়েড ডেভেলপার এর মেমোরি ম্যানেজমেন্ট এর উপর দক্ষতা থাকতে হবে। যখন একটি অ্যানড্রয়েড অ্যাপ্লিকেশন প্রথম চালু হয়, অ্যাপ্লিকেশনটির প্রধান থ্রেডের জন্য একটি Looper অবজেক্ট  তৈরি করে। Looper একটি MessageQueue ইম্প্লিমেন্ট করে, যে একটি লুপ এর ভিতরে মেসেজ অবজেক্ট গুলো একটার পর আরেকটা প্রসেস করে। মূল থ্রেড এর Looper অ্যাপ্লিকেশন এর প্রথম থেকে শেষ পর্যন্ত চলতে থাকে। যখন একটি Handler প্রধান থ্রেডে এ চালু হয় এবং Looper এর MessageQueue সাথে যুক্ত হয়। MessageQueue  তে পোস্ট করা মেসেজ গুলো হ্যান্ডলারের কাছে একটি রেফারেন্স রাখে যাতে করে ফ্রেমওয়ার্ক  Handler#handleMessage(Message) কল করতে পারে যখন Looper শেষ পর্যন্ত মেসেজ প্রসেস করতে পারে। জাভাতে, নন-স্ট্যাটিক ইনার ক্লাস এবং এননিমাস ক্লাসগুলি তাদের বাইরের ক্লাস এর একটি রেফারেন্স ধরে রাখে। স্ট্যাটিক ইনার ক্লাস যেটি রাখে না। সুতরাং মেমোরি লিক টি কোথায়?