مقدار ایدهآل رمی که گوشیها برای چندوظیفگی روان به آن نیاز دارند، موضوعی کاملاً مورد بحث است. اپل با اندازه کوچکتر آیفونهایش کنار میآید که اغلب از راهحلهای اندرویدی قابل استفادهتر است. همچنین هیچ نوع مدیریت حافظه رم را در آیفون پیدا نخواهید کرد، در حالی که اندروید عملکرد اختصاصی خود را برای این کار دارد.
اگر مثلاً در گوشی های Samsung Galaxy به ناستاونی -> مراقبت از دستگاه، یک نشانگر RAM را در اینجا خواهید یافت که اطلاعاتی در مورد میزان فضای خالی و اشغال شده است. پس از کلیک بر روی منو، می توانید ببینید که هر برنامه چقدر حافظه می گیرد و همچنین می توانید در اینجا حافظه را پاک کنید. عملکرد RAM Plus نیز در اینجا قرار دارد. معنی آن این است که مقدار مشخصی گیگابایت را از حافظه داخلی که برای حافظه مجازی استفاده می کند، حذف می کند. آیا می توانید چنین چیزی را در iOS تصور کنید؟
گوشی های هوشمند به رم متکی هستند. به آنها برای ذخیره سیستم عامل، راه اندازی برنامه ها و همچنین ذخیره برخی از داده های آنها در حافظه پنهان و بافر خدمت می کند. بنابراین، رم باید به گونه ای سازماندهی و مدیریت شود که برنامه ها بتوانند به راحتی اجرا شوند، حتی اگر آنها را در پس زمینه رها کنید و پس از مدتی دوباره باز کنید.
سویفت در مقابل جاوا
اما هنگام راه اندازی یک برنامه جدید، برای بارگذاری و اجرای آن باید فضای خالی در حافظه داشته باشید. اگر اینطور نیست، مکان باید تخلیه شود. بنابراین سیستم به اجبار برخی از فرآیندهای در حال اجرا را خاتمه می دهد، مانند برنامه هایی که قبلاً شروع شده اند. با این حال، هر دو سیستم، یعنی اندروید و iOS، با RAM متفاوت کار می کنند.
سیستم عامل iOS به زبان Swift نوشته شده است و آیفون ها در واقع نیازی به بازیافت حافظه استفاده شده از برنامه های بسته به سیستم ندارند. این به دلیل نحوه ساخت iOS است، زیرا اپل کنترل کامل آن را دارد زیرا فقط روی آیفون های خود اجرا می شود. در مقابل، اندروید به زبان جاوا نوشته شده است و در بسیاری از دستگاه ها استفاده می شود، بنابراین باید جهانی تر باشد. هنگامی که برنامه خاتمه می یابد، فضای اشغال شده به سیستم عامل بازگردانده می شود.
کد بومی در مقابل JVM
هنگامی که یک توسعه دهنده یک برنامه iOS را می نویسد، آن را مستقیماً در کدی کامپایل می کند که می تواند روی پردازنده آیفون اجرا شود. این کد کد بومی نامیده می شود زیرا برای اجرا نیاز به تفسیر یا محیط مجازی ندارد. از طرف دیگر اندروید متفاوت است. هنگامی که کد جاوا کامپایل می شود، به کد میانی بایت کد جاوا تبدیل می شود که مستقل از پردازنده است. بنابراین می تواند بر روی پردازنده های مختلف از تولید کنندگان مختلف اجرا شود. این مزایای زیادی برای سازگاری بین پلتفرم دارد.
البته یک نکته منفی هم دارد. هر ترکیب سیستم عامل و پردازنده به محیطی به نام ماشین مجازی جاوا (JVM) نیاز دارد. اما کد بومی بهتر از کدهای اجرا شده از طریق JVM عمل می کند، بنابراین استفاده از JVM به سادگی میزان RAM استفاده شده توسط برنامه را افزایش می دهد. بنابراین برنامه های iOS به طور متوسط 40 درصد از حافظه کمتری استفاده می کنند. همچنین به همین دلیل است که اپل مجبور نیست آیفون های خود را به اندازه دستگاه های اندرویدی به رم مجهز کند.
من دقیقاً یک متخصص نیستم، اما دیدگاه خود را از دیدگاه کاربری که 15 سال از اندروید استفاده کرده و اکنون 2 ماه از آیفون 13 مینی گذشته است، توضیح خواهم داد. در اندروید با حافظه 8 گیگابایتی (اخیراً سامسونگ S21، Flip3) معمولاً بعد از مدتی به برنامه قبلاً راهاندازی شده برمیگشتم و هنوز در RAM بارگذاری میشد، بنابراین دوباره شروع نمیشد و میتوانستم به راحتی از جایی که میخواستم انتخاب کنم. ترک کردن. از طرفی، حتی با 8 گیگابایت حافظه، هفته ای یک بار همه برنامه ها را "شات" می کردم تا رم را پاک کنم، زیرا سیستم با حافظه کامل شروع به کند شدن کرد. من مشکلی با کاهش سرعت آیفون ندارم، اما از طرف دیگر باید بگویم که هنگام استفاده از برنامه های تقریباً یکسان، برعکس، مرتباً برای من پیش می آید که وقتی به برنامه ای که قبلاً راه اندازی شده برمی گردم، دوباره به طور کامل لود می شود و من نمی توانم به آرامی از جایی که متوقف کردم ادامه دهم.
کدام گزینه بهتر است؟ سخت است بگوییم… کشتن برنامه ها در اندروید و پاک کردن رم تنها با دو کلیک انجام می شود. بارگذاری مجدد کل برنامه در آیفون چندان وقت گیر نیست، بنابراین زیاد مهم نیست ... البته ایده آل است که رم بیشتری در آیفون داشته باشید و مانند اندروید مالتی تسکینگ داشته باشید :-D
لعنتی، دوباره احمقانه است. یک چیز، اندروید برای مدت طولانی در جاوا انجام نشده است، این همان چیزی است که Kotlin برای آن است. زباله جمع کن مسئول حافظه است که ساده ترین حافظه در iOS است که حتی با معایبش هم وجود دارد. همه چیز این است که iOS برنامه ها را به محض اینکه آنها را از روی صفحه نمایش حذف می کنید، می کشد. این کار درست مانند لینوکس زمانی که kill pid را در یک فرآیند تایپ می کنید، حافظه را آزاد می کند. به همین دلیل باز کردن مرورگر و بازگشت به کار قبلی بسیار طول می کشد. این مقاله ترجمه کلمه به کلمه یک مقاله X ساله توسط یک متعصب iOS بدون دانش برنامه نویسی است. بله، البته مدیریت حافظه عمدتاً به عهده برنامه نویس است، کاری که برنامه انجام می دهد. اگر روی آن سرفه کند، در دنیا نشت حافظه وجود دارد و pqk شما می توانید X گیگ حافظه داشته باشید و باز هم فایده ای ندارد. و در زمانی که بسیاری از برنامهها فقط WebView هستند، این کار بسیار ساده است، زیرا خود آن چیزی را که میتواند میخورد. مقاله مزخرف است، آشغال است.
اندروید دیگر از jvm استفاده نمی کند، بلکه از dvm استفاده می کند. و علاوه بر این، سپس آن را به یک فایل اجرایی بومی کامپایل می کند
جاوا هنوز در اندروید است.