.NET অ্যাপ্লিকেশনগুলির মেমরির ব্যবহার হ্রাস করার জন্য কয়েকটি টিপস কী? নিম্নলিখিত সাধারণ সি # প্রোগ্রামটি বিবেচনা করুন।
class Program
{
static void Main(string[] args)
{
Console.ReadLine();
}
}
এক্স 64 এর রিলিজ মোডে সংকলিত এবং ভিজ্যুয়াল স্টুডিওর বাইরে চলমান, টাস্ক ম্যানেজার নিম্নলিখিতটি রিপোর্ট করেছেন:
Working Set: 9364k
Private Working Set: 2500k
Commit Size: 17480k
এটি কেবলমাত্র x86 এর জন্য সংকলিত হলে এটি আরও ভাল :
Working Set: 5888k
Private Working Set: 1280k
Commit Size: 7012k
আমি তখন নিম্নলিখিত প্রোগ্রামটি চেষ্টা করেছিলাম যা একই কাজ করে তবে রানটাইম সূচনা করার পরে প্রক্রিয়া আকার ট্রিম করার চেষ্টা করে:
class Program
{
static void Main(string[] args)
{
minimizeMemory();
Console.ReadLine();
}
private static void minimizeMemory()
{
GC.Collect(GC.MaxGeneration);
GC.WaitForPendingFinalizers();
SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle,
(UIntPtr) 0xFFFFFFFF, (UIntPtr)0xFFFFFFFF);
}
[DllImport("kernel32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool SetProcessWorkingSetSize(IntPtr process,
UIntPtr minimumWorkingSetSize, UIntPtr maximumWorkingSetSize);
}
ভিজ্যুয়াল স্টুডিওর বাইরে x86 প্রকাশের ফলাফল :
Working Set: 2300k
Private Working Set: 964k
Commit Size: 8408k
যা কিছুটা ভাল তবে এটি এমন একটি সাধারণ প্রোগ্রামের জন্য এখনও অতিরিক্ত। সি # প্রক্রিয়াটিকে কিছুটা ঝুঁকিতে ফেলতে কি কৌশল আছে? আমি একটি প্রোগ্রাম লিখছি যা বেশিরভাগ সময় পটভূমিতে চালানোর জন্য ডিজাইন করা হয়েছে। আমি ইতিমধ্যে একটি পৃথক অ্যাপ্লিকেশন ডোমেনে যেকোনও ইউজার ইন্টারফেস স্টাফ করছি যার অর্থ ব্যবহারকারী ইন্টারফেস স্টাফটি নিরাপদে আনলোড করা যেতে পারে, তবে যখন কেবল ব্যাকগ্রাউন্ডে বসে থাকে তখন 10 এমবি গ্রহণ করা অতিরিক্ত মনে হয় seems
PS কেন আমি যত্ন করব --- (পাওয়ার) ব্যবহারকারীরা এই বিষয়গুলি নিয়ে উদ্বিগ্ন হন। পারফরম্যান্সে এটির প্রায় কোনও প্রভাব না থাকলেও, আধা-প্রযুক্তি-বুদ্ধিমান ব্যবহারকারীরা (আমার টার্গেট শ্রোতারা) ব্যাকগ্রাউন্ড অ্যাপ্লিকেশন মেমরির ব্যবহার সম্পর্কে হিজি ফিটগুলির মধ্যে ঝোঁক। এমনকি আমি বিব্রত অবস্থায় যখন দেখি যে অ্যাডোব আপডেটার 11 এমবি মেমরি নিয়েছে এবং ফুবার 2000 এর শান্ত স্পর্শে প্রশান্তি বোধ করে, যা খেলেও MB এমবি এর নিচে নিতে পারে। আমি আধুনিক অপারেটিং সিস্টেমে জানি, এই জিনিসগুলি প্রযুক্তিগতভাবে এতটা গুরুত্বপূর্ণ নয়, তবে এর অর্থ এটি বোঝার উপর প্রভাব ফেলবে না।