বিটম্যাপ মেমরি ব্যবহার

একটি অ্যাপে বিটম্যাপ প্রায়শই সবচেয়ে বেশি মেমরি ব্যবহারকারী অবজেক্ট হয়ে থাকে। ফ্রেম রেন্ডারিংয়ের জন্য ডিকোডিং এবং স্কেলিং অপারেশনগুলো প্রায়শই অত্যন্ত গুরুত্বপূর্ণ ভূমিকা পালন করে। বিটম্যাপের মেমরি ব্যবহার অপ্টিমাইজ করার মাধ্যমে জ্যাঙ্ক, এএনআর (ANR) এবং ওওএম (OOM) সম্পর্কিত প্রসেস কিল কমানো যায়, যা ইউআই (UI) রেসপন্সিভনেস, ব্যাটারি লাইফ এবং সার্বিক স্থিতিশীলতায় উল্লেখযোগ্য উন্নতি ঘটায়।

উচ্চ বিটম্যাপ মেমরি ব্যবহার শনাক্ত করুন

অ্যান্ড্রয়েড ভাইটালস অ্যান্ড্রয়েড ডিভাইসগুলো থেকে ডেটা একত্রিত করে একটি অ্যাপের বিটম্যাপ মেমরি ফুটপ্রিন্টের মেট্রিক্স প্রদান করে। এই মেট্রিক্সগুলো ডিফল্টরূপে দৈনিক ডেটার ২৮-দিনের সারাংশ হিসাবে গণনা করা হয়। এই ডেটা বিভিন্ন ধরনের ও সংস্করণের ডিভাইসে মেমরি দক্ষতার প্রবণতা এবং সম্ভাব্য অবনতি শনাক্ত করতে সাহায্য করে।

অ্যান্ড্রয়েড ভাইটালস আপনার অ্যাপের বিটম্যাপ মেমরি ব্যবহারের তথ্য নিম্নলিখিত প্রসেস স্টেট অনুযায়ী বিভক্ত করে শেয়ার করে:

  • ফোরগ্রাউন্ড : অ্যাপটির প্রসেস দৃশ্যমান থাকে। অন্যান্য প্রসেস স্টেটের তুলনায় ফোরগ্রাউন্ডে P99 উল্লেখযোগ্যভাবে বেশি হওয়াটাই স্বাভাবিক, কিন্তু ডেভেলপারদের খতিয়ে দেখা উচিত P99/P50 অনুপাতটি উল্লেখযোগ্য কিনা (যেমন ৩.৫x-এর বেশি), কারণ এটি প্রায়শই একটি বিটম্যাপ মেমরি লিকের দিকে ইঙ্গিত করে। সাধারণ ব্যবহার (P50) এবং অস্বাভাবিক ব্যবহার (P99)-এর মধ্যে পার্থক্য দেখে আপনি এটি শনাক্ত করতে পারেন; যেখানে সাধারণ অ্যাসেট ব্লট সমস্ত পার্সেন্টাইল জুড়ে মেমরিকে সমানভাবে বাড়িয়ে তোলে, সেখানে মেমরি লিক সময়ের সাথে সাথে বাড়তে থাকে, যা শেষের দিকের ডেটাকে (P99) ব্যাপকভাবে প্রভাবিত করে। নিশ্চিত করুন যে অ্যাপটি অন্য স্টেটে স্থানান্তরিত হওয়ার পরেও ফোরগ্রাউন্ড বিটম্যাপ অ্যালোকেশনগুলো অপ্রয়োজনীয়ভাবে থেকে না যায়।
  • ব্যবহারকারী-উপলব্ধ পরিষেবা : অ্যাপের প্রসেসটি একটি উপলব্ধিযোগ্য অবস্থায় চলছে। এর মধ্যে ফোরগ্রাউন্ড পরিষেবা , ত্বরান্বিত কাজ এবং ব্যবহারকারী-প্রবর্তিত ডেটা স্থানান্তর কাজ অন্তর্ভুক্ত। এই অবস্থাগুলিতে যাওয়ার সময় অ্যাপগুলির ভারী ফোরগ্রাউন্ড বিটম্যাপ অ্যালোকেশন ধরে রাখা উচিত নয়। যেহেতু এই পরিষেবাগুলি দীর্ঘ সময় ধরে চলা কাজের জন্য ডিজাইন করা হয়েছে, তাই বড় অ্যাসেট ধরে রাখলে সামগ্রিক ব্যবহারকারীর অভিজ্ঞতা খারাপ হয় এবং লো মেমোরি কিলার ডেমন (LMKD)-কে কম অগ্রাধিকারের প্রসেস বন্ধ করে মেমোরি পুনরুদ্ধার করতে বাধ্য করে।
  • ব্যাকগ্রাউন্ড : অ্যাপটি একটি ব্যাকগ্রাউন্ড সার্ভিস চালাচ্ছে, অথবা সম্প্রতি ব্যাকগ্রাউন্ডে পাঠানো হয়েছিল, কিন্তু এখনও ক্যাশ করা হয়নি। যেহেতু এই প্রসেসের অবস্থা ফোরগ্রাউন্ড বা দৃশ্যমান প্রসেসগুলোর চেয়ে কম গুরুত্বপূর্ণ, তাই মেমোরির চাপ কমাতে অ্যাপগুলোর উচিত এখানে বড় বিটম্যাপ অ্যাসেটগুলো স্পষ্টভাবে রিলিজ করা।
  • ক্যাশড : অ্যাপটি একটি ক্যাশড অবস্থায় আছে। এই অবস্থাটি সিস্টেম মেমরির চাপের (যেমন LMK) প্রতি অত্যন্ত সংবেদনশীল। OS দ্বারা অপসারণ এড়াতে অ্যাপগুলোকে অবশ্যই এই অবস্থায় সক্রিয়ভাবে বিটম্যাপ মেমরির ব্যবহার কমাতে হবে।

উচ্চ বিটম্যাপ মেমরি ব্যবহারের কারণসমূহ

যে ভার্চুয়াল মেমরি কখনও ব্যবহার করা হয়নি, সেটিও গণনার অন্তর্ভুক্ত হতে পারে। যদি আপনি অপ্রত্যাশিতভাবে বেশি বিটম্যাপ মেমরি ব্যবহার দেখতে পান, তবে যাচাই করুন যে আপনি অব্যবহৃত মেমরি বরাদ্দ করছেন না।