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

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

ইউনিটি মেমরি প্রোফাইলিং টুলস
আপনি যদি আপনার অ্যাপ তৈরি করতে ইউনিটি ইঞ্জিন ব্যবহার করেন, তাহলে আপনি ইউনিটির মেমরি প্রোফাইলিং নির্দেশিকা অনুসরণ করতে পারেন। ইউনিটিতে আপনার অ্যাপ্লিকেশনের মেমরি ব্যবহার বিশ্লেষণ করার জন্য দুটি টুল রয়েছে।
প্রথমটি হলো মেমরি প্রোফাইলার মডিউল , যা একটি বিল্ট-ইন প্রোফাইলার এবং এটি আপনার অ্যাপ্লিকেশন কোথায় মেমরি ব্যবহার করছে সে সম্পর্কে প্রাথমিক তথ্য দেয়।

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

অবাস্তব স্মৃতি অন্তর্দৃষ্টি
আনরিয়েল ইঞ্জিন দিয়ে তৈরি অ্যাপগুলো আনরিয়েল মেমোরি ইনসাইটস ব্যবহার করে মেমোরি অ্যালোকেশন এবং ডিঅ্যালোকেশন সম্পর্কিত বিস্তারিত তথ্য দেখতে পারে, যার মধ্যে মেমোরির ব্লকগুলোর সাথে যুক্ত লো লেভেল মেমোরি (LLM) ট্যাগ এবং কলস্ট্যাকও অন্তর্ভুক্ত থাকে।
মেমোরি ইনসাইটস কোয়েরি সিস্টেম যেকোনো সময়ে লাইভ অ্যালোকেশন খুঁজে বের করতে, মেমোরি ব্যবহারের পরিবর্তন শনাক্ত করতে, মেমোরি লিক সনাক্ত করতে এবং স্বল্পমেয়াদী ও দীর্ঘমেয়াদী অ্যালোকেশনের মধ্যে পার্থক্য করতে পারে।
UE 5.4 থেকে, Memory Insights অ্যান্ড্রয়েড প্রোজেক্টের জন্য কলস্ট্যাকসহ মেমরি ট্রেসিং সমর্থন করে।

কম স্মৃতিশক্তির অন্তর্দৃষ্টি
অ্যান্ড্রয়েড এমন কলব্যাক এবং এপিআই প্রদান করে, যার মাধ্যমে আপনি আপনার গেমের মেমরির প্রয়োজনীয়তা কমাতে এবং পূর্ববর্তী গেম রানগুলো কেন বন্ধ করা হয়েছিল তা নির্ধারণ করতে পারেন।
কলব্যাক
অপ্রচলিত ট্রিম কলব্যাকগুলির জন্য রেজিস্টার করবেন না। সিস্টেম যখন মেমোরির সীমাবদ্ধতায় পৌঁছায়, তখন নেটিভ মেমোরি প্রেসার ইভেন্টগুলি শনাক্ত করার জন্য অ্যান্ড্রয়েডের কোনো এপিআই নেই। কম মেমোরির কারণে সিস্টেম বন্ধ হয়ে যাওয়া ঠেকাতে ট্রিম কলব্যাকগুলি সহায়ক হয়নি, তাই অ্যান্ড্রয়েড TRIM_MEMORY_UI_HIDDEN এবং TRIM_MEMORY_BACKGROUND ছাড়া বাকি সবগুলিকে অপ্রচলিত ঘোষণা করেছে।
খেলা সমাপ্তি
অ্যান্ড্রয়েড অ্যাপ এবং গেম দ্রুত লোড হওয়া নিশ্চিত করতে (যা ব্যবহারকারীর অভিজ্ঞতা উন্নত করে) উপলব্ধ সমস্ত মেমরি ব্যবহার করে সেগুলোকে ক্যাশ করার চেষ্টা করে, কিন্তু যখন মেমরি সীমিত হয়ে যায়, তখন সিস্টেমটি ডিভাইসের স্বাভাবিক কার্যক্রমের জন্য মেমরি খালি করতে সবচেয়ে বেশি মেমরি ব্যবহারকারী অ্যাপ এবং গেমগুলো বন্ধ করে দেয়।
গেম মেমোরির আরও ভালো ব্যবহারে সহায়ক তথ্য, অন্তর্দৃষ্টি এবং সেরা অনুশীলনগুলোর মধ্যে নিম্নলিখিতগুলো অন্তর্ভুক্ত:
-
ApplicationExitInfoব্যবহার করুন: এই API-টি জানায় কেন অ্যান্ড্রয়েড সিস্টেম পূর্ববর্তী গেম রানটি বন্ধ করে দিয়েছিল। পূর্ববর্তী প্রসেস বন্ধ হওয়ার কারণ হিসেবে কম মেমোরি ছিল কিনা তা পরীক্ষা করতেApplicationExitInfoব্যবহার করুন। গেমটি কম মেমোরির কারণে বন্ধ হয়েছিল কিনা তা যাচাই করুন, যাতে সেই ডিভাইসে কম মেমোরি ব্যবহারের জন্য গেমটিকে অপ্টিমাইজ করা যায়। - মোট ফিজিক্যাল র্যাম দেখুন: ফোরগ্রাউন্ডে থাকা অবস্থায় গেম যাতে বন্ধ না হয়ে যায় এবং ডিভাইসের ক্ষমতার সাথে সামঞ্জস্য রাখতে, প্রতিটি ডিভাইসের মোট ফিজিক্যাল র্যাম সূক্ষ্মভাবে দেখুন এবং সেই অনুযায়ী গেমের মেমরি ব্যবহার সমন্বয় করুন। যদি ব্যাকগ্রাউন্ডে যাওয়ার কিছুক্ষণ পরেই অ্যাপ বন্ধ হয়ে যাওয়া রোধ করাই লক্ষ্য হয় (যাতে প্লেয়ার মাল্টিটাস্কিং করতে পারে), তাহলে আপনার গেমের মেমরি ব্যবহার কমাতে ট্রিম কলব্যাক (বিশেষ করে
TRIM_MEMORY_UI_HIDDEN) ব্যবহার করুন।
অতিরিক্ত সম্পদ
,অ্যান্ড্রয়েড প্ল্যাটফর্ম এই ধারণার উপর ভিত্তি করে চলে যে, খালি মেমরি হলো অপচয় হওয়া মেমরি। অ্যান্ড্রয়েড সব সময় উপলব্ধ সমস্ত মেমরি ব্যবহার করার চেষ্টা করে। উদাহরণস্বরূপ, সিস্টেম অ্যাপগুলোকে বন্ধ করার পরেও মেমরিতে রেখে দেয়, যাতে ব্যবহারকারী দ্রুত সেগুলোতে ফিরে যেতে পারে। এই কারণে, অ্যান্ড্রয়েড ডিভাইসগুলো প্রায়শই খুব কম খালি মেমরি নিয়ে চলে ( অ্যান্ড্রয়েড মেমরি বরাদ্দ সম্পর্কে এখানে দেখুন)।
অ্যান্ড্রয়েড লো মেমোরি কিলার (LMK) ডেমন প্রসেসটি একটি চলমান অ্যান্ড্রয়েড সিস্টেমের মেমোরির অবস্থা পর্যবেক্ষণ করে এবং উচ্চ মেমোরি চাপের প্রতিক্রিয়ায় সবচেয়ে কম প্রয়োজনীয় প্রসেসগুলোকে বন্ধ করে দেয়, যাতে সিস্টেমের কর্মক্ষমতা গ্রহণযোগ্য মাত্রায় বজায় থাকে।
কোন প্রসেসটি বন্ধ করা হবে তা নির্ধারণ করতে, LMK ডেমন চলমান প্রসেসগুলোকে অগ্রাধিকার দেওয়ার জন্য oom_adj_score নামক একটি আউট অফ মেমোরি স্কোর ব্যবহার করে। উচ্চ স্কোরযুক্ত প্রসেসগুলো প্রথমে বন্ধ করা হয়। ব্যাকগ্রাউন্ড অ্যাপগুলো প্রথমে বন্ধ করা হয়; সিস্টেম প্রসেসগুলো, সবশেষে। নিচের সারণিতে উচ্চ থেকে নিম্ন ক্রমে LMK স্কোরিং বিভাগগুলো তালিকাভুক্ত করা হয়েছে। প্রথম সারিতে থাকা সর্বোচ্চ-স্কোরিং বিভাগের আইটেমগুলো প্রথমে বন্ধ করা হয়:

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

ইউনিটি মেমরি প্রোফাইলিং টুলস
আপনি যদি আপনার অ্যাপ তৈরি করতে ইউনিটি ইঞ্জিন ব্যবহার করেন, তাহলে আপনি ইউনিটির মেমরি প্রোফাইলিং নির্দেশিকা অনুসরণ করতে পারেন। ইউনিটিতে আপনার অ্যাপ্লিকেশনের মেমরি ব্যবহার বিশ্লেষণ করার জন্য দুটি টুল রয়েছে।
প্রথমটি হলো মেমরি প্রোফাইলার মডিউল , যা একটি বিল্ট-ইন প্রোফাইলার এবং এটি আপনার অ্যাপ্লিকেশন কোথায় মেমরি ব্যবহার করছে সে সম্পর্কে প্রাথমিক তথ্য দেয়।

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

অবাস্তব স্মৃতি অন্তর্দৃষ্টি
আনরিয়েল ইঞ্জিন দিয়ে তৈরি অ্যাপগুলো আনরিয়েল মেমোরি ইনসাইটস ব্যবহার করে মেমোরি অ্যালোকেশন এবং ডিঅ্যালোকেশন সম্পর্কিত বিস্তারিত তথ্য দেখতে পারে, যার মধ্যে মেমোরির ব্লকগুলোর সাথে যুক্ত লো লেভেল মেমোরি (LLM) ট্যাগ এবং কলস্ট্যাকও অন্তর্ভুক্ত থাকে।
মেমোরি ইনসাইটস কোয়েরি সিস্টেম যেকোনো সময়ে লাইভ অ্যালোকেশন খুঁজে বের করতে, মেমোরি ব্যবহারের পরিবর্তন শনাক্ত করতে, মেমোরি লিক সনাক্ত করতে এবং স্বল্পমেয়াদী ও দীর্ঘমেয়াদী অ্যালোকেশনের মধ্যে পার্থক্য করতে পারে।
UE 5.4 থেকে, Memory Insights অ্যান্ড্রয়েড প্রোজেক্টের জন্য কলস্ট্যাকসহ মেমরি ট্রেসিং সমর্থন করে।

কম স্মৃতিশক্তির অন্তর্দৃষ্টি
অ্যান্ড্রয়েড এমন কলব্যাক এবং এপিআই প্রদান করে, যার মাধ্যমে আপনি আপনার গেমের মেমরির প্রয়োজনীয়তা কমাতে এবং পূর্ববর্তী গেম রানগুলো কেন বন্ধ করা হয়েছিল তা নির্ধারণ করতে পারেন।
কলব্যাক
অপ্রচলিত ট্রিম কলব্যাকগুলির জন্য রেজিস্টার করবেন না। সিস্টেম যখন মেমোরির সীমাবদ্ধতায় পৌঁছায়, তখন নেটিভ মেমোরি প্রেসার ইভেন্টগুলি শনাক্ত করার জন্য অ্যান্ড্রয়েডের কোনো এপিআই নেই। কম মেমোরির কারণে সিস্টেম বন্ধ হয়ে যাওয়া ঠেকাতে ট্রিম কলব্যাকগুলি সহায়ক হয়নি, তাই অ্যান্ড্রয়েড TRIM_MEMORY_UI_HIDDEN এবং TRIM_MEMORY_BACKGROUND ছাড়া বাকি সবগুলিকে অপ্রচলিত ঘোষণা করেছে।
খেলা সমাপ্তি
অ্যান্ড্রয়েড অ্যাপ এবং গেম দ্রুত লোড হওয়া নিশ্চিত করতে (যা ব্যবহারকারীর অভিজ্ঞতা উন্নত করে) উপলব্ধ সমস্ত মেমরি ব্যবহার করে সেগুলোকে ক্যাশ করার চেষ্টা করে, কিন্তু যখন মেমরি সীমিত হয়ে যায়, তখন সিস্টেমটি ডিভাইসের স্বাভাবিক কার্যক্রমের জন্য মেমরি খালি করতে সবচেয়ে বেশি মেমরি ব্যবহারকারী অ্যাপ এবং গেমগুলো বন্ধ করে দেয়।
গেম মেমোরির আরও ভালো ব্যবহারে সহায়ক তথ্য, অন্তর্দৃষ্টি এবং সেরা অনুশীলনগুলোর মধ্যে নিম্নলিখিতগুলো অন্তর্ভুক্ত:
-
ApplicationExitInfoব্যবহার করুন: এই API-টি জানায় কেন অ্যান্ড্রয়েড সিস্টেম পূর্ববর্তী গেম রানটি বন্ধ করে দিয়েছিল। পূর্ববর্তী প্রসেস বন্ধ হওয়ার কারণ হিসেবে কম মেমোরি ছিল কিনা তা পরীক্ষা করতেApplicationExitInfoব্যবহার করুন। গেমটি কম মেমোরির কারণে বন্ধ হয়েছিল কিনা তা যাচাই করুন, যাতে সেই ডিভাইসে কম মেমোরি ব্যবহারের জন্য গেমটিকে অপ্টিমাইজ করা যায়। - মোট ফিজিক্যাল র্যাম দেখুন: ফোরগ্রাউন্ডে থাকা অবস্থায় গেম যাতে বন্ধ না হয়ে যায় এবং ডিভাইসের ক্ষমতার সাথে সামঞ্জস্য রাখতে, প্রতিটি ডিভাইসের মোট ফিজিক্যাল র্যাম সূক্ষ্মভাবে দেখুন এবং সেই অনুযায়ী গেমের মেমরি ব্যবহার সমন্বয় করুন। যদি ব্যাকগ্রাউন্ডে যাওয়ার কিছুক্ষণ পরেই অ্যাপ বন্ধ হয়ে যাওয়া রোধ করাই লক্ষ্য হয় (যাতে প্লেয়ার মাল্টিটাস্কিং করতে পারে), তাহলে আপনার গেমের মেমরি ব্যবহার কমাতে ট্রিম কলব্যাক (বিশেষ করে
TRIM_MEMORY_UI_HIDDEN) ব্যবহার করুন।
অতিরিক্ত সম্পদ
,অ্যান্ড্রয়েড প্ল্যাটফর্ম এই ধারণার উপর ভিত্তি করে চলে যে, খালি মেমরি হলো অপচয় হওয়া মেমরি। অ্যান্ড্রয়েড সব সময় উপলব্ধ সমস্ত মেমরি ব্যবহার করার চেষ্টা করে। উদাহরণস্বরূপ, সিস্টেম অ্যাপগুলোকে বন্ধ করার পরেও মেমরিতে রেখে দেয়, যাতে ব্যবহারকারী দ্রুত সেগুলোতে ফিরে যেতে পারে। এই কারণে, অ্যান্ড্রয়েড ডিভাইসগুলো প্রায়শই খুব কম খালি মেমরি নিয়ে চলে ( অ্যান্ড্রয়েড মেমরি বরাদ্দ সম্পর্কে এখানে দেখুন)।
অ্যান্ড্রয়েড লো মেমোরি কিলার (LMK) ডেমন প্রসেসটি একটি চলমান অ্যান্ড্রয়েড সিস্টেমের মেমোরির অবস্থা পর্যবেক্ষণ করে এবং উচ্চ মেমোরি চাপের প্রতিক্রিয়ায় সবচেয়ে কম প্রয়োজনীয় প্রসেসগুলোকে বন্ধ করে দেয়, যাতে সিস্টেমের কর্মক্ষমতা গ্রহণযোগ্য মাত্রায় বজায় থাকে।
কোন প্রসেসটি বন্ধ করা হবে তা নির্ধারণ করতে, LMK ডেমন চলমান প্রসেসগুলোকে অগ্রাধিকার দেওয়ার জন্য oom_adj_score নামক একটি আউট অফ মেমোরি স্কোর ব্যবহার করে। উচ্চ স্কোরযুক্ত প্রসেসগুলো প্রথমে বন্ধ করা হয়। ব্যাকগ্রাউন্ড অ্যাপগুলো প্রথমে বন্ধ করা হয়; সিস্টেম প্রসেসগুলো, সবশেষে। নিচের সারণিতে উচ্চ থেকে নিম্ন ক্রমে LMK স্কোরিং বিভাগগুলো তালিকাভুক্ত করা হয়েছে। প্রথম সারিতে থাকা সর্বোচ্চ-স্কোরিং বিভাগের আইটেমগুলো প্রথমে বন্ধ করা হয়:

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

ইউনিটি মেমরি প্রোফাইলিং টুলস
আপনি যদি আপনার অ্যাপ তৈরি করতে ইউনিটি ইঞ্জিন ব্যবহার করেন, তাহলে আপনি ইউনিটির মেমরি প্রোফাইলিং নির্দেশিকা অনুসরণ করতে পারেন। ইউনিটিতে আপনার অ্যাপ্লিকেশনের মেমরি ব্যবহার বিশ্লেষণ করার জন্য দুটি টুল রয়েছে।
প্রথমটি হলো মেমরি প্রোফাইলার মডিউল , যা একটি বিল্ট-ইন প্রোফাইলার এবং এটি আপনার অ্যাপ্লিকেশন কোথায় মেমরি ব্যবহার করছে সে সম্পর্কে প্রাথমিক তথ্য দেয়।

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

অবাস্তব স্মৃতি অন্তর্দৃষ্টি
আনরিয়েল ইঞ্জিন দিয়ে তৈরি অ্যাপগুলো আনরিয়েল মেমোরি ইনসাইটস ব্যবহার করে মেমোরি অ্যালোকেশন এবং ডিঅ্যালোকেশন সম্পর্কিত বিস্তারিত তথ্য দেখতে পারে, যার মধ্যে মেমোরির ব্লকগুলোর সাথে যুক্ত লো লেভেল মেমোরি (LLM) ট্যাগ এবং কলস্ট্যাকও অন্তর্ভুক্ত থাকে।
মেমোরি ইনসাইটস কোয়েরি সিস্টেম যেকোনো সময়ে লাইভ অ্যালোকেশন খুঁজে বের করতে, মেমোরি ব্যবহারের পরিবর্তন শনাক্ত করতে, মেমোরি লিক সনাক্ত করতে এবং স্বল্পমেয়াদী ও দীর্ঘমেয়াদী অ্যালোকেশনের মধ্যে পার্থক্য করতে পারে।
ইউই ৫.৪ থেকে, মেমোরি ইনসাইটস অ্যান্ড্রয়েড প্রোজেক্টের জন্য কলস্ট্যাকসহ মেমোরি ট্রেসিং সমর্থন করে।

কম স্মৃতিশক্তির অন্তর্দৃষ্টি
অ্যান্ড্রয়েড এমন কলব্যাক এবং এপিআই প্রদান করে, যার মাধ্যমে আপনি আপনার গেমের মেমরির প্রয়োজনীয়তা কমাতে এবং পূর্ববর্তী গেম রানগুলো কেন বন্ধ করা হয়েছিল তা নির্ধারণ করতে পারেন।
কলব্যাক
অপ্রচলিত ট্রিম কলব্যাকগুলির জন্য রেজিস্টার করবেন না। সিস্টেম যখন মেমোরির সীমাবদ্ধতায় পৌঁছায়, তখন নেটিভ মেমোরি প্রেসার ইভেন্টগুলি শনাক্ত করার জন্য অ্যান্ড্রয়েডের কোনো এপিআই নেই। কম মেমোরির কারণে সিস্টেম বন্ধ হয়ে যাওয়া ঠেকাতে ট্রিম কলব্যাকগুলি সহায়ক হয়নি, তাই অ্যান্ড্রয়েড TRIM_MEMORY_UI_HIDDEN এবং TRIM_MEMORY_BACKGROUND ছাড়া বাকি সবগুলিকে অপ্রচলিত ঘোষণা করেছে।
খেলা সমাপ্তি
অ্যান্ড্রয়েড অ্যাপ এবং গেম দ্রুত লোড হওয়া নিশ্চিত করতে (যা ব্যবহারকারীর অভিজ্ঞতা উন্নত করে) উপলব্ধ সমস্ত মেমরি ব্যবহার করে সেগুলোকে ক্যাশ করার চেষ্টা করে, কিন্তু যখন মেমরি সীমিত হয়ে যায়, তখন সিস্টেমটি ডিভাইসের স্বাভাবিক কার্যক্রমের জন্য মেমরি খালি করতে সবচেয়ে বেশি মেমরি ব্যবহারকারী অ্যাপ এবং গেমগুলো বন্ধ করে দেয়।
গেম মেমোরির আরও ভালো ব্যবহারে সহায়ক তথ্য, অন্তর্দৃষ্টি এবং সেরা অনুশীলনগুলোর মধ্যে নিম্নলিখিতগুলো অন্তর্ভুক্ত:
-
ApplicationExitInfoব্যবহার করুন: এই API-টি জানায় কেন অ্যান্ড্রয়েড সিস্টেম পূর্ববর্তী গেম রানটি বন্ধ করে দিয়েছিল। পূর্ববর্তী প্রসেস বন্ধ হওয়ার কারণ হিসেবে কম মেমোরি ছিল কিনা তা পরীক্ষা করতেApplicationExitInfoব্যবহার করুন। গেমটি কম মেমোরির কারণে বন্ধ হয়েছিল কিনা তা যাচাই করুন, যাতে সেই ডিভাইসে কম মেমোরি ব্যবহারের জন্য গেমটিকে অপ্টিমাইজ করা যায়। - মোট ফিজিক্যাল র্যাম দেখুন: ফোরগ্রাউন্ডে থাকা অবস্থায় গেম যাতে বন্ধ না হয়ে যায় এবং ডিভাইসের ক্ষমতার সাথে সামঞ্জস্য রাখতে, প্রতিটি ডিভাইসের মোট ফিজিক্যাল র্যাম সূক্ষ্মভাবে দেখুন এবং সেই অনুযায়ী গেমের মেমরি ব্যবহার সমন্বয় করুন। যদি ব্যাকগ্রাউন্ডে যাওয়ার কিছুক্ষণ পরেই অ্যাপ বন্ধ হয়ে যাওয়া রোধ করাই লক্ষ্য হয় (যাতে প্লেয়ার মাল্টিটাস্কিং করতে পারে), তাহলে আপনার গেমের মেমরি ব্যবহার কমাতে ট্রিম কলব্যাক (বিশেষ করে
TRIM_MEMORY_UI_HIDDEN) ব্যবহার করুন।
অতিরিক্ত সম্পদ
,অ্যান্ড্রয়েড প্ল্যাটফর্ম এই ধারণার উপর ভিত্তি করে চলে যে, খালি মেমরি হলো অপচয় হওয়া মেমরি। অ্যান্ড্রয়েড সব সময় উপলব্ধ সমস্ত মেমরি ব্যবহার করার চেষ্টা করে। উদাহরণস্বরূপ, সিস্টেম অ্যাপগুলোকে বন্ধ করার পরেও মেমরিতে রেখে দেয়, যাতে ব্যবহারকারী দ্রুত সেগুলোতে ফিরে যেতে পারে। এই কারণে, অ্যান্ড্রয়েড ডিভাইসগুলো প্রায়শই খুব কম খালি মেমরি নিয়ে চলে ( অ্যান্ড্রয়েড মেমরি বরাদ্দ সম্পর্কে এখানে দেখুন)।
অ্যান্ড্রয়েড লো মেমোরি কিলার (LMK) ডেমন প্রসেসটি একটি চলমান অ্যান্ড্রয়েড সিস্টেমের মেমোরির অবস্থা পর্যবেক্ষণ করে এবং উচ্চ মেমোরি চাপের প্রতিক্রিয়ায় সবচেয়ে কম প্রয়োজনীয় প্রসেসগুলোকে বন্ধ করে দেয়, যাতে সিস্টেমের কর্মক্ষমতা গ্রহণযোগ্য মাত্রায় বজায় থাকে।
কোন প্রসেসটি বন্ধ করা হবে তা নির্ধারণ করতে, LMK ডেমন চলমান প্রসেসগুলোকে অগ্রাধিকার দেওয়ার জন্য oom_adj_score নামক একটি আউট অফ মেমোরি স্কোর ব্যবহার করে। উচ্চ স্কোরযুক্ত প্রসেসগুলো প্রথমে বন্ধ করা হয়। ব্যাকগ্রাউন্ড অ্যাপগুলো প্রথমে বন্ধ করা হয়; সিস্টেম প্রসেসগুলো, সবশেষে। নিচের সারণিতে উচ্চ থেকে নিম্ন ক্রমে LMK স্কোরিং বিভাগগুলো তালিকাভুক্ত করা হয়েছে। প্রথম সারিতে থাকা সর্বোচ্চ-স্কোরিং বিভাগের আইটেমগুলো প্রথমে বন্ধ করা হয়:

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

ইউনিটি মেমরি প্রোফাইলিং টুলস
আপনি যদি আপনার অ্যাপ তৈরি করতে ইউনিটি ইঞ্জিন ব্যবহার করেন, তাহলে আপনি ইউনিটির মেমরি প্রোফাইলিং নির্দেশিকা অনুসরণ করতে পারেন। ইউনিটিতে আপনার অ্যাপ্লিকেশনের মেমরি ব্যবহার বিশ্লেষণ করার জন্য দুটি টুল রয়েছে।
প্রথমটি হলো মেমরি প্রোফাইলার মডিউল , যা একটি বিল্ট-ইন প্রোফাইলার এবং এটি আপনার অ্যাপ্লিকেশন কোথায় মেমরি ব্যবহার করছে সে সম্পর্কে প্রাথমিক তথ্য দেয়।

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

অবাস্তব স্মৃতি অন্তর্দৃষ্টি
আনরিয়েল ইঞ্জিন দিয়ে তৈরি অ্যাপগুলো আনরিয়েল মেমোরি ইনসাইটস ব্যবহার করে মেমোরি অ্যালোকেশন এবং ডিঅ্যালোকেশন সম্পর্কিত বিস্তারিত তথ্য দেখতে পারে, যার মধ্যে মেমোরির ব্লকগুলোর সাথে যুক্ত লো লেভেল মেমোরি (LLM) ট্যাগ এবং কলস্ট্যাকও অন্তর্ভুক্ত থাকে।
মেমোরি ইনসাইটস কোয়েরি সিস্টেম যেকোনো সময়ে লাইভ অ্যালোকেশন খুঁজে বের করতে, মেমোরি ব্যবহারের পরিবর্তন শনাক্ত করতে, মেমোরি লিক সনাক্ত করতে এবং স্বল্পমেয়াদী ও দীর্ঘমেয়াদী অ্যালোকেশনের মধ্যে পার্থক্য করতে পারে।
ইউই ৫.৪ থেকে, মেমোরি ইনসাইটস অ্যান্ড্রয়েড প্রোজেক্টের জন্য কলস্ট্যাকসহ মেমোরি ট্রেসিং সমর্থন করে।

কম স্মৃতিশক্তির অন্তর্দৃষ্টি
অ্যান্ড্রয়েড এমন কলব্যাক এবং এপিআই প্রদান করে, যার মাধ্যমে আপনি আপনার গেমের মেমরির প্রয়োজনীয়তা কমাতে এবং পূর্ববর্তী গেম রানগুলো কেন বন্ধ করা হয়েছিল তা নির্ধারণ করতে পারেন।
কলব্যাক
অপ্রচলিত ট্রিম কলব্যাকগুলির জন্য রেজিস্টার করবেন না। সিস্টেম যখন মেমোরির সীমাবদ্ধতায় পৌঁছায়, তখন নেটিভ মেমোরি প্রেসার ইভেন্টগুলি শনাক্ত করার জন্য অ্যান্ড্রয়েডের কোনো এপিআই নেই। কম মেমোরির কারণে সিস্টেম বন্ধ হয়ে যাওয়া ঠেকাতে ট্রিম কলব্যাকগুলি সহায়ক হয়নি, তাই অ্যান্ড্রয়েড TRIM_MEMORY_UI_HIDDEN এবং TRIM_MEMORY_BACKGROUND ছাড়া বাকি সবগুলিকে অপ্রচলিত ঘোষণা করেছে।
খেলা সমাপ্তি
অ্যান্ড্রয়েড অ্যাপ এবং গেম দ্রুত লোড হওয়া নিশ্চিত করতে (যা ব্যবহারকারীর অভিজ্ঞতা উন্নত করে) উপলব্ধ সমস্ত মেমরি ব্যবহার করে সেগুলোকে ক্যাশ করার চেষ্টা করে, কিন্তু যখন মেমরি সীমিত হয়ে যায়, তখন সিস্টেমটি ডিভাইসের স্বাভাবিক কার্যক্রমের জন্য মেমরি খালি করতে সবচেয়ে বেশি মেমরি ব্যবহারকারী অ্যাপ এবং গেমগুলো বন্ধ করে দেয়।
গেম মেমোরির আরও ভালো ব্যবহারে সহায়ক তথ্য, অন্তর্দৃষ্টি এবং সেরা অনুশীলনগুলোর মধ্যে নিম্নলিখিতগুলো অন্তর্ভুক্ত:
-
ApplicationExitInfoব্যবহার করুন: এই API-টি জানায় কেন অ্যান্ড্রয়েড সিস্টেম পূর্ববর্তী গেম রানটি বন্ধ করে দিয়েছিল। পূর্ববর্তী প্রসেস বন্ধ হওয়ার কারণ হিসেবে কম মেমোরি ছিল কিনা তা পরীক্ষা করতেApplicationExitInfoব্যবহার করুন। গেমটি কম মেমোরির কারণে বন্ধ হয়েছিল কিনা তা যাচাই করুন, যাতে সেই ডিভাইসে কম মেমোরি ব্যবহারের জন্য গেমটিকে অপ্টিমাইজ করা যায়। - মোট ফিজিক্যাল র্যাম দেখুন: ফোরগ্রাউন্ডে থাকা অবস্থায় গেম যাতে বন্ধ না হয়ে যায় এবং ডিভাইসের ক্ষমতার সাথে সামঞ্জস্য রাখতে, প্রতিটি ডিভাইসের মোট ফিজিক্যাল র্যাম সূক্ষ্মভাবে দেখুন এবং সেই অনুযায়ী গেমের মেমরি ব্যবহার সমন্বয় করুন। যদি ব্যাকগ্রাউন্ডে যাওয়ার কিছুক্ষণ পরেই অ্যাপ বন্ধ হয়ে যাওয়া রোধ করাই লক্ষ্য হয় (যাতে প্লেয়ার মাল্টিটাস্কিং করতে পারে), তাহলে আপনার গেমের মেমরি ব্যবহার কমাতে ট্রিম কলব্যাক (বিশেষ করে
TRIM_MEMORY_UI_HIDDEN) ব্যবহার করুন।