يعد المقدار المثالي من ذاكرة الوصول العشوائي (RAM) التي تحتاجها الهواتف للقيام بمهام متعددة بسلاسة موضوعًا مثيرًا للجدل. تتغلب شركة Apple على حجم أصغر في أجهزة iPhone الخاصة بها، والذي غالبًا ما يكون أكثر قابلية للاستخدام من حلول Android. لن تجد أيضًا أي نوع من إدارة ذاكرة الوصول العشوائي (RAM) على iPhone، في حين أن Android لديه وظيفة مخصصة خاصة به لهذا الغرض.
إذا ذهبت، على سبيل المثال، في هواتف Samsung Galaxy إلى تعديل -> العناية بالجهاز، ستجد هنا مؤشر ذاكرة الوصول العشوائي (RAM) يحتوي على معلومات حول مقدار المساحة الفارغة والمقدار المشغول. بعد النقر على القائمة، يمكنك معرفة مقدار الذاكرة التي يستهلكها كل تطبيق، ولديك أيضًا خيار مسح الذاكرة هنا. توجد وظيفة RAM Plus هنا أيضًا. معناه أنه سيقتطع عددًا معينًا من الجيجابايت من وحدة التخزين الداخلية التي سيستخدمها للذاكرة الافتراضية. هل يمكنك تخيل شيء كهذا على نظام iOS؟
تعتمد الهواتف الذكية على ذاكرة الوصول العشوائي (RAM). إنه يخدمهم لتخزين نظام التشغيل وتشغيل التطبيقات وأيضًا تخزين بعض بياناتهم في ذاكرة التخزين المؤقت والذاكرة المؤقتة. وبالتالي، يجب تنظيم ذاكرة الوصول العشوائي (RAM) وإدارتها بطريقة تجعل التطبيقات تعمل بسلاسة، حتى لو قمت بإسقاطها في الخلفية وفتحتها مرة أخرى بعد فترة.
سويفت مقابل. جافا
ولكن عند بدء تطبيق جديد، يجب أن يكون لديك مساحة خالية في الذاكرة لتحميله وتشغيله. إذا لم يكن الأمر كذلك، فيجب إخلاء المكان. وبالتالي، سيقوم النظام بإنهاء بعض العمليات قيد التشغيل بالقوة، مثل التطبيقات التي بدأت بالفعل. ومع ذلك، يعمل كلا النظامين، أي Android وiOS، بشكل مختلف مع ذاكرة الوصول العشوائي.
نظام التشغيل iOS مكتوب بلغة Swift، ولا تحتاج أجهزة iPhone فعليًا إلى إعادة تدوير الذاكرة المستخدمة من التطبيقات المغلقة وإعادتها إلى النظام. ويرجع ذلك إلى الطريقة التي تم بها إنشاء نظام التشغيل iOS، لأن شركة Apple تتمتع بالسيطرة الكاملة عليه لأنه يعمل فقط على أجهزة iPhone الخاصة بها. في المقابل، يتم كتابة Android بلغة Java ويتم استخدامه على العديد من الأجهزة، لذلك يجب أن يكون أكثر عالمية. عند إنهاء التطبيق، يتم إرجاع المساحة التي شغلها إلى نظام التشغيل.
الكود الأصلي مقابل. JVM
عندما يكتب أحد المطورين تطبيقًا لنظام iOS، فإنه يقوم بتجميعه مباشرة في كود يمكن تشغيله على معالج iPhone. يُطلق على هذا الرمز اسم الكود الأصلي لأنه لا يتطلب أي ترجمة أو بيئة افتراضية لتشغيله. أندرويد، من ناحية أخرى، مختلف. عندما يتم تجميع كود Java، يتم تحويله إلى كود Java Bytecode الوسيط، وهو مستقل عن المعالج. وبالتالي يمكن تشغيله على معالجات مختلفة من شركات مصنعة مختلفة. وهذا له مزايا كبيرة للتوافق عبر الأنظمة الأساسية.
وبطبيعة الحال، هناك أيضا الجانب السلبي. يحتاج كل نظام تشغيل ومجموعة معالجات إلى بيئة تعرف باسم Java Virtual Machine (JVM). لكن أداء التعليمات البرمجية الأصلية أفضل من التعليمات البرمجية التي يتم تنفيذها من خلال JVM، لذا فإن استخدام JVM يؤدي ببساطة إلى زيادة مقدار ذاكرة الوصول العشوائي (RAM) التي يستخدمها التطبيق. لذلك تستخدم تطبيقات iOS ذاكرة أقل، بمتوسط 40%. ولهذا السبب أيضًا، لا يتعين على Apple تزويد أجهزة iPhone الخاصة بها بذاكرة الوصول العشوائي (RAM) بقدر ما تفعله مع أجهزة Android.
أنا لست خبيرًا تمامًا، لكنني سأصف وجهة نظري من وجهة نظر مستخدم يستخدم Android لمدة 15 عامًا، وهو الآن بعد شهرين من استخدام iPhone 2 mini. على نظام التشغيل Android المزود بذاكرة سعة 13 جيجابايت (أحدثها Samsung S8 وFlip21)، عادةً ما أعود بعد وقت معين إلى التطبيق الذي تم تشغيله مسبقًا وكان لا يزال محملاً في ذاكرة الوصول العشوائي (RAM)، لذلك لم يبدأ من جديد ويمكنني المتابعة بسلاسة من حيث بدأت. متروك مهمل. من ناحية أخرى، حتى مع وجود ذاكرة بسعة 3 جيجابايت، قمت "بإيقاف" جميع التطبيقات مرة واحدة في الأسبوع لمسح ذاكرة الوصول العشوائي (RAM)، لأن النظام بدأ في التباطؤ مع امتلاء الذاكرة. ليس لدي مشكلة في إبطاء سرعة جهاز iPhone، ولكن من ناحية أخرى، يجب أن أقول أنه عند استخدام تطبيقات متطابقة تقريبًا، على العكس من ذلك، يحدث لي بانتظام أنه عندما أعود إلى تطبيق تم تشغيله مسبقًا، يتم تحميله بالكامل مرة أخرى ولا أستطيع الاستمرار بسلاسة من حيث توقفت.
الخيار الذي هو أفضل؟ من الصعب القول… إن إيقاف التطبيقات على نظام Android ومسح ذاكرة الوصول العشوائي (RAM) هو مسألة نقرتين. إن تحميل التطبيق بأكمله مرة أخرى على iPhone لا يستغرق وقتًا طويلاً، لذلك لا يهم كثيرًا... بالطبع، سيكون من المثالي الحصول على المزيد من ذاكرة الوصول العشوائي على iPhone والقيام بمهام متعددة كما هو الحال على Android :-D
اللعنة، إنه غبي مرة أخرى. لسبب واحد، لم يتم استخدام Android في Java لفترة طويلة، وهذا هو ما تهدف إليه Kotlin. جامع البيانات المهملة هو المسؤول عن الذاكرة، وهي أبسط الذاكرة في نظام iOS، والتي توجد حتى مع عيوبها. الأمر برمته هو أن نظام التشغيل iOS يقتل التطبيقات بمجرد إزالتها من الشاشة. يؤدي هذا إلى تحرير الذاكرة تمامًا كما هو الحال في Linux عندما تكتب kill pid للعملية. ولهذا السبب يستغرق فتح المتصفح والعودة إلى العمل السابق وقتًا طويلاً. هذه المقالة عبارة عن ترجمة حرفية لمقالة عمرها X عام كتبها أحد متعصبي نظام التشغيل iOS دون أي معرفة بالبرمجة. نعم بالطبع، إدارة الذاكرة هي في الأساس مسؤولية المبرمج، وهو ما يفعله التطبيق. إذا سعل عليها، فهناك تسرب للذاكرة في العالم ويمكن أن يكون لديك X غيغابايت من الذاكرة ولا تزال عديمة الفائدة. وفي الوقت الذي تكون فيه العديد من التطبيقات عبارة عن WebView فقط، يكون هذا أمرًا بسيطًا للغاية، لأنه في حد ذاته يأكل ما في وسعه. المقال هراء، قمامة.
لم يعد Android يستخدم jvm، بل يستخدم dvm. وبالإضافة إلى ذلك، فإنه يقوم بعد ذلك بتجميعه في ملف قابل للتنفيذ أصلي
Java لا تزال في Android.