আমার মেমরির ফাঁস এবং তাদের কী কারণ হতে পারে তার প্রাথমিক জ্ঞান রয়েছে have সে কারণেই আমি বুঝতে পারি না আমার কোডটিতে আমার কোনও সমস্যা আছে বা এটি একটি মিথ্যা ইতিবাচক। প্রকল্পটি ছোট নয় বলে আমার কোডের কোন অংশটি ভাগ করা উচিত তা আমি জানি না। তবে কেবল মন্তব্যে আমাকে জানান এবং আমি প্রয়োজনীয় কোড যুক্ত করব।
আমি নেভিগেশন খিলান উপাদান ব্যবহার করে এবং এমভিভিএম প্যাটার্ন অনুসরণ করি। আমি প্রকল্পের বিকাশে পরবর্তী সময়ে লিক কানারি লাইব্রেরি যুক্ত করেছি এবং আমি যখন পর্দার মাঝে নেভিগেট করি তখন এটি রক্ষিত উদাহরণগুলি সম্পর্কে সতর্কতা দিতে শুরু করে।
আমি যখন পিছনের স্ট্যাকের টুকরো টুকরো যোগ করি তখন সমস্যা হয়। পিছনে স্ট্যাক প্রতিটি যুক্ত টুকরা রক্ষিত দৃষ্টান্তগুলির পাল্টা বৃদ্ধি পায়। এটি যখন 5 টি এর প্রান্তিক মান পৌঁছে যায় তখন লিকনারি গাদা ফেলে এবং রিপোর্ট সরবরাহ করে।
তবে যদি আমি ব্যাক বোতামে ক্লিক করি এবং পূর্ববর্তী স্ক্রিনগুলিতে ফিরে যাই তবে রক্ষিত দৃষ্টান্তগুলির পাল্টা হ্রাস পায় এবং শেষ পর্যন্ত যখন 1 ম স্ক্রিনে ফিরে আসে তখন সমস্ত রক্ষিত দৃষ্টান্তগুলি অদৃশ্য হয়ে যায়।
আমি যদি হিপ বিশ্লেষণের প্রতিবেদনগুলি দেখি তবে এটি বলছে যে ভেরিয়েবল সমন্বয়কারী লেআউট যা CoordinatorLayout
এক্সএমএল-এর একটি রেফারেন্স লিক করেছে। আমি যদি ভেরিয়েবল এবং এর সমস্ত ব্যবহার অপসারণ করি এবং অ্যাপটি চালিত করি তবে আবার একই সমস্যাটি দেখতে পাচ্ছি, তবে এখন অন্য ভেরিয়েবলের সাথে যা এক্সএমএলে অন্য ভিউয়ের রেফারেন্স। LeakCanary ফাঁস হওয়ার কথা জানিয়েছে এমন সমস্ত মতামত এবং তাদের ব্যবহারগুলি মুছে ফেলার চেষ্টা করেছি। যখন এটি বলে যে একটি TextView
, যা কেবলমাত্র একটি পাঠ্য সেট onViewCreated
করতে ব্যবহৃত হয় এবং অন্য কোথাও ব্যবহৃত হয় না, আমি ফাঁস হয়ে যাচ্ছি আমি সন্দেহ করতে শুরু করি যে আমার কোডটিতে কোনও সমস্যা আছে।
আমি টুকরোগুলিতে লাইফসাইकल পদ্ধতি কলগুলি বিশ্লেষণ করে দেখেছি যে আমি যখন পূর্ববর্তী খণ্ডের জন্য নতুন স্ক্রিনে নেভিগেট করি তখন পর্যন্ত সমস্ত পদ্ধতি এবং কল onDestroyView
না করা পর্যন্ত onDestroy
। আমি যখন পিছনে ক্লিক করি তখন onDestroy
সেই খণ্ডের জন্য ডাকা হয় যা পিছনের স্ট্যাকের শীর্ষে ছিল এবং ধরে রাখা উদাহরণগুলির পাল্টা হ্রাস পায়।
আমি সন্দেহ করি যে নেভিগেশন উপাদানটি কোনও খণ্ডের নজির রাখছে যখন এটি পিছনের স্ট্যাকের মধ্যে রয়েছে এবং LeakCanary এটিকে ফাঁস হিসাবে দেখছে।
onDestroyView
।