مبحث مقدار رم یا حافظه تصادفی مورد نیاز برای گوشیهای هوشمند مبحث پیچیدهای است، چرا که گوشیهای مجهز به اندروید و iOS مقادیر مختلفی رم ارائه میکنند. این حافظه در واقع اطلاعات سیستم عامل و برنامههای مختلف را زنده نگه میدارد. ولی آیفون و اندرویدیها در مقایسه با یکدیگر چگونه حافظه رم را مدیریت میکنند، چه تفاوتهایی میان سازوکارهای آنها وجود دارد و کدام یک بهتر عمل میکند؟
تاریخچهای از مدیریت رم در اندروید و iOS
در سال ۲۰۰۸ که HTC Dream معرفی شد، این گوشی فقط ۱۹۲ مگابایت حافظه رم دارد. نسل اول آیفون هم تنها از ۱۲۸ مگابایت رم بهره میبرد. آیفون ۳G همین مقدار رم را حفظ کرد، اما با آیفون ۳GS مقدار رم به ۲۵۶ مگابایت افزایش یافت. رم در آیفون ۴ دو برابر و دوباره در آیفون ۵ دو برابر شد. اپل تا سال ۲۰۱۵ مقدار حافظه تصادفی را همان ۱ گیگابایت نگه داشت، اما با آیفون ۶S این مقدار را به ۲ گیگابایت رساند. این شرکت حالا در آیفون ۱۳ پرو از ۶ گیگابایت رم استفاده میکند.
مقایسه اندازه رم در iOS و اندروید
در اکوسیستم اندروید شرایط فرق میکند. نسل اول گلکسی S در سال ۲۰۱۰ با ۵۱۲ مگابایت رم عرضه شد و نسل دوم این دستگاه ۱ گیگابایت حافظه تصادفی داشت. گلکسی S۳ در برخی مدلها و همچنین گلکسی S۴ از ۲ گیگابایت رم بهره میبردند. این شرکت حالا در سال ۲۰۲۲ با گلکسی S۲۲ اولترا حداکثر ۱۶ گیگابایت رم ارائه میکند.
چنین تفاوت چشمگیری در مقدار رم میان اندروید و iOS باعث به وجود آمدن این تصور شده که آیفون بهتر از اندروید حافظه را مدیریت میکند. ولی ماجرا به همین سادگی نیست، چون مسئله بیشتر از بهینهسازیهای خود سیستم عامل به استفاده از زبان برنامهنویسی جاوا در کد اندروید برمیگردد.
کد اندروید
برنامههایی که برای iOS نوشته میشوند، بهطور مستقیم توسط پردازنده آیفون اجرا میشوند یا به اصطلاح بومی هستند، چون نیازی به مفسر یا فضای شبیهسازی ندارند. ولی اندروید از جاوا استفاده میکند و کد برنامهها در زمان اجرا به یک کد واسط (جاوا بایتکد) تبدیل میشود که وابسته به پردازنده است. این جاوا بایتکد میتواند روی پردازندههای آرم، x۸۶ و RISC-V اجرا شود. شعار جاوا این است: یک بار کد بنویسید، همه جا آن را اجرا کنید.
با این حال، مشکل جاوا این است که هر سیستم عامل و پردازنده به محیطی برای لحظه اجرا نیاز دارد که تحت عنوان «ماشین مجازی جاوا» (JVM) شناخته میشود. JVM جاوا بایتکد را میفهمد و آن را به کد بومی پردازنده تبدیل میکند. در این روش همچنان دو مشکل اصلی باقی میماند: اول، کد بومی بهتر از کدی عمل میکند که توسط JVM اجرا میشود. دوم، استفاده از JVM مقدار رم مورد نیاز برنامهها را افزایش میدهد. در ادامه جدولی را میبینید که مقدار رم مورد نیاز برنامهها در iOS و اندروید را نشان میدهد:
همانطور که میبینید، اپلیکیشنهای iOS تا ۷۰ درصد کمتر رم مصرف میکنند. میانگین این عدد ۴۰ درصد است؛ یعنی iOS حدود ۴۰ درصد کمتر از اندروید رم نیاز دارد. با این حال، همه اپلیکیشنها از JVM استفاده نمیکنند و بعضی از آنها بومی هستند. این برنامهها معمولا در دسته بازیها قرار دارند، چون بازیها از رابط کاربری اندروید یا فریمورکهای آن استفاده نمیکنند. در ادامه جدول مقدار رم مورد نیاز برای اجرای بازیها در iOS و اندروید را میبینید:
در اینجا نتیجه بسیار متفاوت است. حتی بازیهایی وجود دارند که در اندروید تا ۲۰ درصد کمتر از iOS رم مصرف میکنند. ولی بهطور میانگین، همچنان مقدار رم مورد نیاز در iOS حدود ۱۰ درصد کمتر است. این ۱۰ درصد هنوز مهم تلقی میشود و شایسته بررسی دقیقتر است، اما میتوانیم از آن چشمپوشی کنیم.
چقدر رم برای آیفون ایدهآل است؟
ابتدا باید تعریفی از «ایدهآل» داشته باشیم. اجرای یک اپلیکیشن حتی روی مدلهای قدیمی آیفون دشوار نیست. اما سوال این است که میتوانیم چند برنامه یا بازی را بهصورت همزمان در حافظه نگه داریم؟ به عبارت دیگر، میتوان چند اپلیکیشن را به شکلی باز نگه داشت که اگر به یک برنامه دیگر رفتید و دوباره به برنامه اول برگشتید، اطلاعاتتان از دست نرفته باشد؟ عبارت ایدهآل معمولا با توجه به نیازهای هر کاربر تعریف میشود.
اگر بخواهید یک برنامه را باز کنید و حافظه کافی نداشته باشید، iOS دو کار انجام میدهد. ابتدا سعی میکند آن دسته از بلوکهای حافظه (موسوم به صفحات) را که مدتی است از آنها استفاده نشده، فشرده کند. سیستم عامل برخی از این صفحات را (با استفاده از یک الگوریتم فشردهسازی به نام WKdm) فشرده میکند و دوباره آنها را در حافظه قرار میدهد. اگر ۱۲۸ هزار صفحه داشته باشید و آنها را ۵۰ درصد فشرده کنید، به اندازه ۶۴ هزار صفحه فضای خالی به دست میآورید.
اگر با فرآیند فشردهسازی فضای کافی به دست نیاید، یک برنامه از حافظه بیرون انداخته میشود تا فضای آن آزاد شود. با این کار، اگر دوباره به اپلیکیشن اول برگردید، همه اطلاعات باید از نو بارگذاری شود. در ادامه نموداری از رم مصرفی و فشردهشده در آیفون SE ۲۰۲۰ با ۳ گیگابایت رم را میبینید:
مصرف حافظه در آیفون SE ۲۰۲۰
iOS در ابتدا، یعنی زمانی که ۲ گیگابایت رم مصرف شده، فقط حدود ۲۰۰ مگابایت را فشرده میکند. هرچه تعداد برنامهها بیشتر میشود، مقدار رم مصرفی و فشردهشده بالاتر میرود. زمانی که اپلیکیشن Tasty اجرا شد، بخشی از برنامههای قبلی از حافظه بیرون انداخته شدند. همانطور که قبلا گفتیم، بازیها مصرف حافظه بالایی دارند. در ادامه نمودار عملکرد آیفون ۱۳ پرو با ۶ گیگابایت رم را در زمان اجرای چند بازی میبینید:
مصرف حافظه بازیها در آیفون ۱۳ پرو
این گوشی نسبت به آیفون SE ۲۰۲۰ (با حداکثر ۴ بازی همزمان)، قادر است بازیهای بیشتری را در حافظه خود نگه دارد. هرچه در این نمودار جلوتر میرویم بازیها سنگینتر میشوند و برخی از آنها بیش از ۱ گیگابایت رم مصرف میکنند. زمانی که بازی Genshin Impact اجرا شد، سیستم عامل دیگر نتوانست بخش بیشتری از حافظه را فشرده کند و Subway Surfers, ۱۹۴۵ Airforce و Brawl Stars را از حافظه خارج کرد.
در مجموع میتوان گفت رم ۳ گیگابایتی آیفون SE ۲۰۲۰ برای کسانی که فقط از برنامههای کاربردی و شبکههای اجتماعی استفاده میکنند، کافی است. اما اگر به دنبال برنامههای چندرسانهای و مرور وب هستید، باید حداقل به فکر ۴ گیگابایت رم باشید. اگر هم میخواهید روی موبایل خود بازی کنید، باید یک آیفون ۶ گیگابایتی بخرید.
چقدر رم برای گوشیهای اندرویدی ایدهآل است؟
بالاتر دیدیم که گوشیهای اندرویدی برای اجرای اپلیکیشنها حافظه بیشتری میخواهند. زمانی که یک دستگاه حافظه کافی برای اجرای یک برنامه نداشته باشید، از تکنیکی مشابه iOS استفاده میکند و دست به فشردهسازی میزند. این سازوکار در اندروید به روش انتقال به zRAM مشهور است. یک گوشی پیکسل ۴ گیگابایتی میتواند همه اپلیکیشنهای موجود در نمودار آیفون را اجرا کند و مشکلی از بابت جابهجا شدن بین آنها نداشته باشد. ولی بحث گیمینگ کمی دشوارتر میشود:
مصرف حافظه بازیها در پیکسل ۳ XL
پیکسل ۳ XL با ۴ گیگابایت رم عرضه میشود، اما ۳۵۷۹ مگابایت حافظه در دسترس دارد. با افزایش تعداد بازیها، مقدار فشردهسازی حافظه رم بالاتر میرود و زمانی که به اجرای بازی Brawl Stars میرسیم، بیش از ۱.۵ گیگابایت از حافظه فشرده شده، اما این مقدار کافی نیست و Subway Surfers هم از رم بیرون انداخته میشوند.
شرایط برای گوشیهایی مثل گلکسی S۲۱ اولترا با ۱۲ گیگابایت رم، خیلی فرق میکند:
مصرف حافظه بازیها در گلکسی S۲۱ اولترا
همانطور که میبینید ۱۲ گیگابایت رم حتی برای خورههای بازی کاملا کافی است. در نمودار بالا همه بازیها حتی در زمان اجرای Genshin Impact در حافظه باقی ماندند. در واقع اگر بخواهید اندروید را مجبور به بیرون انداختن یکی از بازیها کنید، باید در کنار این بازیها یک مرورگر کروم با ۱۲ زبانه باز کنید؛ بنابراین ۴ گیگابایت رم در اندروید برای کسانی که فقط از چند اپلیکیشن ساده استفاده میکنند و زیادی اهل وبگردی یا بازی نیستند، کافی است. اگر میخواهید استفاده جدیتری از موبایل خود داشته باشید و حتی کمی بازی کنید، باید به فکر ۶ گیگابایت رم بیفتید. با رم ۸ گیگابایتی میتوانید بهراحتی بهصورت همزمان از چندین برنامه استفاده کنید و آینده مطمئنتری داشته باشید. برای کسانی که به دنبال اجرای آسان بازیها و اپلیکیشنهای سنگیناند، ۱۲ گیگابایت کاملا کافی است؛ و ۱۶ گیگابایت هم با استانداردهای فعلی بیش از حد به نظر میرسد.
آیفون و اندروید
اندروید و iOS برای ایجاد فضای بیشتر در حافظه دست به فشردهسازی میزنند. اگر دوباره بخواهید از اطلاعات فشردهشده برنامهها استفاده کنید، سیستم عامل باید آنها را از حالت فشرده خارج کند. هر دو سیستم عامل از نظر فناوری عملکرد خوبی دارند، ولی میتوان گفت که اندروید پیش از بیرون انداختن برنامههای باز فشردهسازی بیشتری انجام میدهد. ولی از آن طرف، چون در iOS شاهد اجرای کدهای بومی هستیم، برنامهها به خودی خود کوچکتر و سبکترند. این تفاوت در بحث بازیها کمتر میشود، اما همچنان حائز اهمیت است.
در پایان میتوان گفت که ۶ گیگابایت رم در آیفون ۱۳ پرو برای کاربران حرفهای و گیمرها کافی است. عملکرد این گوشی به اندازه گلکسی S۲۱ اولترا با ۱۲ گیگابایت رم خوب نیست، اما خیلی بهتر از گوشیهای اندرویدی مجهز به ۶ گیگابایت رم عمل میکند. با توجه به این که اندروید در کل رم بیشتری نیاز دارد، به عنوان معادل یک آیفون ۶ گیگابایتی باید یک موبایل اندرویدی ۸ گیگابایتی را برای خرید مدنظر قرار دهید.
منبع: دیجیاتو