چرا بعضی برنامهها رم کامپیوتر شما را میبلعند و چطور جلوی آن را بگیریم؟
برخی از اپلیکیشنهای ویندوزی حجم زیادی از رم کامپیوتر را بهخود اختصاصی میدهند و البته راهکاری برای حل این مشکل وجود دارد.
برخی از اپلیکیشنهای ویندوزی حجم زیادی از رم کامپیوتر را بهخود اختصاصی میدهند و البته راهکاری برای حل این مشکل وجود دارد.
با بررسی برنامههایی مثل دیسکورد، اسلک، فیگما و مایکروسافت تیمز در تسکمنیجر ویندوز، مشاهده میکنید که هر کدام با چند پردازش جداگانه، مقدار قابلتوجهی از رم کامپیوتر را اشغال کردهاند. احتمالا در اولین نگاه ویندوز را مقصر میدانید، اما این بار مشکل به سیستمعامل ارتباط ندارد؛ مقصر اصلی فریمورک الکترون (Electron) است که بسیاری از اپلیکیشنهای دسکتاپ محبوب بر پایهی آن ساخته شدهاند و هر کدام، بهجای استفاده از منابع مشترک سیستم، مرورگر کاملی را داخل خودشان حمل میکنند.
در این مطلب توضیح میدهیم الکترون دقیقا چطور کار میکند، چرا مصرف رم آن بالا است، چه تفاوتی با اپهای بومی ویندوز دارد و مهمتر از همه، چه کارهای عملی میتوان برای کاهش مصرف رم آنها انجام داد.
الکترون در واقع ترکیبی از دو تکنولوژی است که بهطور طبیعی قرار نبود کنار هم قرار بگیرند: موتور مرورگر کرومیوم گوگل و Node.js. توسعهدهندگان با این ترکیب میتوانند اپ دسکتاپ را با جاوااسکریپت، HTML و CSS بنویسند؛ یعنی همان تکنولوژیهایی که برای توسعهی وب هم استفاده میشوند و در نتیجه نیازی به نوشتن کد جداگانه برای ویندوز، مک و لینوکس ندارند.
داخل هر اپلیکیشن الکترونی، همیشه حداقل دو نوع پردازش جدا از هم در حال اجرا است:
پردازشهای رندر کننده به دلایل امنیتی از سیستم اصلی ایزوله شدهاند و برای ارتباط با پردازش اصلی باید از لایهی پیامرسانی داخلی عبور کنند، نه اینکه مستقیم به سیستم دسترسی داشته باشند. از طرف دیگر هماهنگ کردن Node.js و کرومیوم روی یک ماشین نیاز به لایهی Threading پشتپرده دارد تا رویدادهای کاملا متفاوت این دو تکنولوژی با هم تداخل پیدا نکنند.
نتیجهی معماری چیزی است که به آن Electron bloat (باد کردن حجم و مصرف منابع الکترون) میگویند. یک اپ بومی کامپایل شده برای ویندوز میتواند از کتابخانههایی که سیستمعامل یا اپهای دیگر از قبل در حافظه بارگذاری کردهاند بهره ببرد، اما اپهای الکترونی این امکان را ندارند و به بیان دیگر هر کدام نسخهی کامل و مستقلی از مرورگر را با خودشان حمل میکنند و هیچ چیزی بینشان به اشتراک گذاشته نمیشود.
خبر خوب این است که توسعهدهندهی اپ الکترونی فقط مسئول نوشتن کد است، ولی شما بهعنوان کاربر چند راه برای کنترل این مصرف دارید:
سادهترین و مؤثرترین راهحل باز کردن مستقیم اپها در مرورگر است. اسلک و دیسکورد هر دو بهخوبی در تب مرورگر کار میکنند. وقتی این سرویسها در تب باز مرورگر اجرا شوند، دیگر مجبور نیستید نسخهی کاملی از کرومیوم و Node.js را فقط برای یک پنجرهی چت بارگذاری کنید.
اپهای الکترونی به سوئیچهای استاندارد ابزار خط فرمان پاسخ میدهند و میتوانید آنها را با اجرا از ترمینال یا ویرایش میانبر دسکتاپ اعمال کنید. برای این کار:
فلگها فقط سقف مصرف را محدود میکنند و اگر خیلی پایین تنظیم شوند احتمال کند شدن یا کرش اپ وجود دارد، بنابراین بهتر است با اعداد مختلف تست و نقطهی تعادل را پیدا کنید.
با کلید ترکیبی Ctrl+Shift+Esc تسکمنجیر را باز کنید و ببینید کدام اپهای الکترونی در پسزمینه باز ماندهاند و آنها را کاملاً ببندید. درواقع بسیاری از این اپها حتی درحالت مینیمایز هم در system tray فعال باقی میمانند و رم مصرف میکنند.
اگر واقعا به نسخهی دسکتاپ اپلیکیشن موردنظر خود نیاز دارید، جایگزینهای ساختهشده با فریمورک Tauri ارزش امتحان کردن دارند. Tauri بهجای حمل نسخهی کامل از کرومیوم، از نمای وب سیستمعامل مثل WebView2 ویندوز بهره میبرد و هستهی آن هم بهجای Node.js با زبان Rust نوشته شده است. این تفاوت معماری باعث میشود اپهای Tauri در حالت بلااستفاده معمولا حدود ۳۰ تا ۵۰ مگابایت رم مصرف کنند، در حالی که اپهای الکترونی در همین حالت چیزی حدود ۱۵۰ تا ۳۰۰ مگابایت رم به خود اختصاص میدهند. حجم فایل نصبی اپهای Tauri هم معمولا بین ۳ تا ۱۰ مگابایت و اپهای الکترونی ۱۲۰ تا ۲۰۰ مگابایت است.