পণ্যের খবর

আপনার অ্যাপকে বৃহত্তর মেমরি সীমার জন্য প্রস্তুত করা

২ মিনিটের পাঠ
ব্লেয়ার হারমনের প্রোফাইল দেখুন
Blair Harmon প্রোডাক্ট ম্যানেজমেন্ট ডিরেক্টর, অ্যান্ড্রয়েড প্ল্যাটফর্ম

একটি চমৎকার ব্যবহারকারীর অভিজ্ঞতা অ্যান্ড্রয়েডের মূল লক্ষ্য, এবং সেই প্রতিশ্রুতি পূরণ করতে ডিভাইসগুলোকে দ্রুত, প্রতিক্রিয়াশীল এবং নির্ভরযোগ্য রাখা প্রয়োজন। এ কারণেই মেমরি অপ্টিমাইজেশন আগের চেয়ে অনেক বেশি গুরুত্বপূর্ণ। পুরো ইকোসিস্টেম জুড়ে, মেমরির মূল্যবৃদ্ধির প্রতিক্রিয়ায় নতুন ডিভাইসগুলো তাদের ফিজিক্যাল মেমরি ক্যাপাসিটি একই রাখছে বা এমনকি কমিয়ে দিচ্ছে, তবুও ব্যবহারকারীরা একই রকম নির্বিঘ্ন, উচ্চ-পারফরম্যান্সের অ্যাপ অভিজ্ঞতা আশা করে চলেছেন।

অ্যান্ড্রয়েড ১৭-এ, আমরা পিক্সেল ডিভাইস থেকে শুরু করে, প্রতি-অ্যাপ মেমরি লিমিট চালু করেছি । এর উদ্দেশ্য হলো, অ্যাপ্লিকেশনগুলোর অতিরিক্ত মেমরি ব্যবহার এবং এর ফলে সৃষ্ট সিস্টেম-ব্যাপী ধীরগতির হাত থেকে সার্বিক ইউজার এক্সপেরিয়েন্সকে রক্ষা করা। আগামী বছর জুড়ে, ক্রমবর্ধমান সংখ্যক নির্মাতা তাদের ৪জিবি থেকে ১৬জিবি+ পর্যন্ত বিভিন্ন র‍্যাম কনফিগারেশনের ডিভাইসগুলোতে অ্যান্ড্রয়েডের প্রতি-অ্যাপ মেমরি লিমিট ব্যবহার করবে। যদি আপনার অ্যাপ এই সীমা অতিক্রম করে, তবে এটির গতি কমে যাবে এবং এটি বন্ধও হয়ে যেতে পারে। ওএস থ্রটলিং প্রতিরোধ করতে এবং একটি নির্বিঘ্ন ইউজার এক্সপেরিয়েন্স বজায় রাখতে আপনার অ্যাপের মেমরি ফুটপ্রিন্ট অপ্টিমাইজ করা অপরিহার্য।  

এই পোস্টে আমরা আলোচনা করব, এই সীমাগুলো নেপথ্যে কীভাবে কাজ করে, নতুন অ্যান্ড্রয়েড ভাইটালস মেট্রিক্স ব্যবহার করে কীভাবে আপনার মেমরি ফুটপ্রিন্ট পরিমাপ করবেন এবং আপনার অ্যাপ বা গেম অপ্টিমাইজ করার জন্য কার্যকরী পদক্ষেপগুলো কী কী।

স্মৃতির সীমাবদ্ধতা বোঝা

যখন আপনার অ্যাপ তার মেমরি বাজেট অতিক্রম করে, তখন অ্যান্ড্রয়েড ডিভাইসের প্রতিক্রিয়াশীলতা রক্ষা করার জন্য পর্যায়ক্রমিক পদক্ষেপ গ্রহণ করে:

  1. zRAM সোয়াপিং : আপনার অ্যাপ তার বরাদ্দকৃত সীমায় পৌঁছে গেলে, সিস্টেম আপনার অ্যাপের পেজগুলোকে zRAM (কম্প্রেসড র‍্যাম)-এ জোর করে পাঠিয়ে দেয়। যদিও zRAM পেজগুলোকে তাৎক্ষণিক বহিষ্কার হওয়া থেকে আটকায়, পেজ কম্প্রেস এবং ডিকম্প্রেস করার ফলে সিপিইউ-এর উপর অতিরিক্ত চাপ সৃষ্টি হয়, যার ফলে ইউজার ইন্টারফেসে (UI) লক্ষণীয় ঝাঁকুনি দেখা দিতে পারে এবং অভিজ্ঞতা ধীর হয়ে যেতে পারে।
  2. প্রসেস টার্মিনেশন : যদি আপনার অ্যাপ zRAM থ্রেশহোল্ডের বাইরে মেমরি ব্যবহার বাড়াতে থাকে, তাহলে সিস্টেম এটিকে টার্মিনেট করে দেবে । আপনার অ্যাপ সেশনটি এই সীমাবদ্ধতার দ্বারা প্রভাবিত হয়েছে কিনা তা জানতে, আপনি ApplicationExitInfo মধ্যে getDescription() কল করতে পারেন। যদি সিস্টেম কোনো সীমা প্রয়োগ করে থাকে, তাহলে এক্সিট করার কারণ হিসেবে REASON_OTHER রিপোর্ট করা হয় এবং ডেসক্রিপশন স্ট্রিং-এ "MemoryLimiter:AnonSwap" লেখা থাকবে। মেমরি লিমিটে পৌঁছালে স্বয়ংক্রিয়ভাবে হিপ ডাম্প ক্যাপচার করার জন্য আপনি TRIGGER_TYPE_ANOMALY ব্যবহার করে ট্রিগার-ভিত্তিক প্রোফাইলিংও কাজে লাগাতে পারেন।

অ্যাপ-ভিত্তিক মেমরি সীমা এবং সিস্টেম দ্বারা তার প্রয়োগ সম্পর্কে আরও জানতে, অ্যান্ড্রয়েড ১৭ অ্যাপ মেমরি লিমিটস ডকুমেন্টেশন পর্যালোচনা করুন। বিভিন্ন ডিভাইস কনফিগারেশনে আপনার অ্যাপ্লিকেশনটি পরীক্ষা করতে মেমরি লিমিটার adb কমান্ডগুলো ব্যবহার করুন।

স্মৃতিশক্তির সমস্যা পর্যবেক্ষণ ও নির্ণয়

যা পরিমাপ করা যায় না, তা অপ্টিমাইজও করা যায় না। অ্যান্ড্রয়েড ইকোসিস্টেম জুড়ে মেমরি লিক, অতিরিক্ত হিপ অ্যালোকেশন এবং আউট-অফ-মেমরি (OOM) ক্র্যাশ শনাক্ত করার জন্য পরিপূরক মনিটরিং টুল ব্যবহার করা প্রয়োজন:

  • অ্যান্ড্রয়েড ভাইটালসের মাধ্যমে ম্যাক্রো-স্তরের স্বাস্থ্য: অতিরিক্ত ঝামেলা ছাড়াই ব্যাপক ও সামগ্রিক চিত্র দেখার জন্য, গুগল প্লে কনসোলের অ্যান্ড্রয়েড ভাইটালস মেমরি ইউসেজ (অ্যানোনিমাস আরএসএস + সোয়াপ) -এর মতো অপরিহার্য মেট্রিক সরবরাহ করে। এবং বিটম্যাপ মেমরি ব্যবহার । এটি আপনাকে বিভিন্ন প্রসেস স্টেট (ফোরগ্রাউন্ড, ব্যাকগ্রাউন্ড, ইউজার-পারসিভড সার্ভিস এবং ক্যাশড) এবং র‍্যাম ক্লাস রেঞ্জ জুড়ে মেমরি বণ্টনের একটি স্পষ্ট চিত্র দেয়, যা আপনাকে মেমরি আউটলায়ার শনাক্ত করতে সাহায্য করে।
  • ফায়ারবেস ক্র্যাশলিটিক্স-এর মাধ্যমে মেমরি লিমিটার এক্সিট এবং OOM ট্র্যাকিং: আপনার মূল মেট্রিকগুলোকে প্রভাবিত করার আগেই গুরুতর মেমরি অবনতি সম্পর্কে অবগত থাকতে, ক্র্যাশলিটিক্স সংস্করণ 20.1.0 অতিরিক্ত ডিবাগ ডেটা যুক্ত করেছে যা আপনাকে আউট-অফ-মেমরি এক্সেপশন এবং মেমরি লিমিটার কিল ধরতে, অগ্রাধিকার দিতে এবং সমাধান করতে সাহায্য করে। কাস্টম লগ এবং কী-ভ্যালু মেটাডেটার পাশাপাশি এই ইভেন্টগুলো ট্র্যাক করা হলে, মেমরি ব্যর্থতা ঘটলে আপনি প্রসেসের অবস্থা সম্পর্কে তাৎক্ষণিক ধারণা পাবেন।
  • ProfilingManager-এর মাধ্যমে ফিল্ড-ভিত্তিক ট্রেস: যে সকল টিম একটি পারফরম্যান্স অবজার্ভেবিলিটি ফ্রেমওয়ার্ক বজায় রাখতে সক্ষম, তাদের জন্য Android 15-এ প্রবর্তিত ProfilingManager API (API লেভেল 35) আপনার অ্যাপকে সরাসরি প্রোডাকশন ডিভাইস থেকে প্রোগ্রাম্যাটিকভাবে জাভা হিপ ডাম্প এবং হিপ প্রোফাইলের মতো বিস্তারিত মেমরি ডিবাগ আর্টিফ্যাক্ট অনুরোধ ও সংগ্রহ করার সুযোগ দেয়। এছাড়াও আপনি TRIGGER_TYPE_OOM এবং TRIGGER_TYPE_ANOMALY মতো নির্দিষ্ট সিস্টেম সিগন্যালের উপর ভিত্তি করে হিপ ডাম্প ক্যাপচার ট্রিগার করতে পারেন।

অন্যান্য মেমরি মনিটরিং কৌশল সম্পর্কে আরও জানতে আমাদের ডকুমেন্টেশন পড়ুন।

সারাংশ ও পরবর্তী পদক্ষেপ

অ্যান্ড্রয়েড সব ধরনের র‍্যাম জুড়ে অ্যাপ-ভিত্তিক মেমরি সীমা বাড়ানোর ফলে, এখনই আপনার মেমরি ফুটপ্রিন্ট নিরীক্ষা করার সময়:

  1. মেমরি অপ্টিমাইজেশনকে অগ্রাধিকার দিন : সর্বোত্তম পদ্ধতি ব্যবহারের মাধ্যমে আপনার অ্যাপকে অ্যাপ মেমরি সীমাবদ্ধতার প্রভাব থেকে রক্ষা করুন।
  2. মেমরি ব্যবহার নিরীক্ষণ করুন : অস্বাভাবিক আচরণ শনাক্ত ও সমাধান করতে আপনার অ্যাপের মেমরি ব্যবহার নিরীক্ষণ করুন
  3. আপনার গেম অপ্টিমাইজ করুন : প্রসেস স্টেট জুড়ে মেমরি সাশ্রয় সর্বাধিক করতে গেম এবং জটিল মাল্টিমিডিয়া অ্যাপের জন্য সর্বশেষ নির্দেশিকা অনুসরণ করুন।

সহায়ক সম্পদ ও তথ্যসূত্র

লিখেছেন:
পড়তে থাকুন