Η ιδανική ποσότητα μνήμης RAM που χρειάζονται τα τηλέφωνα για την ομαλή εκτέλεση πολλαπλών εργασιών είναι ένα θέμα που συζητείται αρκετά. Η Apple τα καταφέρνει με ένα μικρότερο μέγεθος στα iPhone της, το οποίο είναι συχνά πιο εύχρηστο από τις λύσεις Android. Επίσης, δεν θα βρείτε κανενός είδους διαχείριση μνήμης RAM στο iPhone, ενώ το Android έχει τη δική του αποκλειστική λειτουργία για αυτό.
Εάν πηγαίνετε, για παράδειγμα, σε τηλέφωνα Samsung Galaxy σε Ρυθμίσεις -> Φροντίδα συσκευής, εδώ θα βρείτε μια ένδειξη RAM με πληροφορίες για το πόσο ελεύθερος χώρος είναι και πόσο καταλαμβάνεται. Αφού κάνετε κλικ στο μενού, μπορείτε να δείτε πόση μνήμη καταλαμβάνει κάθε εφαρμογή και έχετε επίσης την επιλογή να καθαρίσετε τη μνήμη εδώ. Η λειτουργία RAM Plus βρίσκεται επίσης εδώ. Το νόημά του είναι ότι θα δαγκώσει έναν ορισμένο αριθμό GB από τον εσωτερικό χώρο αποθήκευσης, τον οποίο θα χρησιμοποιήσει για εικονική μνήμη. Μπορείτε να φανταστείτε κάτι τέτοιο στο iOS;
Τα smartphone βασίζονται στη μνήμη RAM. Τους εξυπηρετεί για την αποθήκευση του λειτουργικού συστήματος, την εκκίνηση εφαρμογών και επίσης για την αποθήκευση ορισμένων από τα δεδομένα τους στην προσωρινή μνήμη και την προσωρινή μνήμη. Επομένως, η RAM πρέπει να οργανωθεί και να διαχειρίζεται με τέτοιο τρόπο ώστε οι εφαρμογές να μπορούν να εκτελούνται ομαλά, ακόμα κι αν τις αφήσετε στο παρασκήνιο και τις ανοίξετε ξανά μετά από λίγο.
Swift vs. Ιάβα
Αλλά όταν ξεκινάτε μια νέα εφαρμογή, πρέπει να έχετε ελεύθερο χώρο στη μνήμη για να τη φορτώσετε και να την εκτελέσετε. Εάν δεν συμβαίνει αυτό, η θέση πρέπει να εκκενωθεί. Επομένως, το σύστημα θα τερματίσει αναγκαστικά ορισμένες διεργασίες που εκτελούνται, όπως εφαρμογές που έχουν ήδη ξεκινήσει. Ωστόσο, και τα δύο συστήματα, δηλαδή το Android και το iOS, λειτουργούν διαφορετικά με τη μνήμη RAM.
Το λειτουργικό σύστημα iOS είναι γραμμένο σε Swift και τα iPhone στην πραγματικότητα δεν χρειάζεται να ανακυκλώνουν τη χρησιμοποιημένη μνήμη από κλειστές εφαρμογές πίσω στο σύστημα. Αυτό οφείλεται στον τρόπο κατασκευής του iOS, επειδή η Apple έχει τον πλήρη έλεγχο πάνω σε αυτό, αφού τρέχει μόνο στα iPhone της. Αντίθετα, το Android είναι γραμμένο σε Java και χρησιμοποιείται σε πολλές συσκευές, επομένως πρέπει να είναι πιο καθολικό. Όταν η εφαρμογή τερματιστεί, ο χώρος που πήρε επιστρέφεται στο λειτουργικό σύστημα.
Εγγενής κώδικας vs. JVM
Όταν ένας προγραμματιστής γράφει μια εφαρμογή iOS, τη μεταγλωττίζει απευθείας σε κώδικα που μπορεί να εκτελεστεί στον επεξεργαστή του iPhone. Αυτός ο κώδικας ονομάζεται εγγενής κώδικας επειδή δεν απαιτεί ερμηνεία ή εικονικό περιβάλλον για να εκτελεστεί. Το Android, από την άλλη, είναι διαφορετικό. Όταν ο κώδικας Java μεταγλωττίζεται, μετατρέπεται σε ενδιάμεσο κώδικα Java Bytecode, ο οποίος είναι ανεξάρτητος από τον επεξεργαστή. Επομένως, μπορεί να τρέξει σε διαφορετικούς επεξεργαστές διαφορετικών κατασκευαστών. Αυτό έχει τεράστια πλεονεκτήματα για τη συμβατότητα μεταξύ πλατφορμών.
Φυσικά, υπάρχει και ένα μειονέκτημα. Κάθε συνδυασμός λειτουργικού συστήματος και επεξεργαστή χρειάζεται ένα περιβάλλον γνωστό ως Java Virtual Machine (JVM). Αλλά ο εγγενής κώδικας αποδίδει καλύτερα από τον κώδικα που εκτελείται μέσω του JVM, επομένως η χρήση του JVM απλώς αυξάνει την ποσότητα της μνήμης RAM που χρησιμοποιείται από την εφαρμογή. Έτσι, οι εφαρμογές iOS χρησιμοποιούν λιγότερη μνήμη, κατά μέσο όρο 40%. Αυτός είναι επίσης ο λόγος που η Apple δεν χρειάζεται να εξοπλίζει τα iPhone της με τόση μνήμη RAM όση με τις συσκευές Android.
Δεν είμαι ακριβώς ειδικός, αλλά θα περιγράψω την άποψή μου από την οπτική γωνία ενός χρήστη που χρησιμοποιεί το android για 15 χρόνια και τώρα είναι 2 μήνες στο iPhone 13 mini. Σε android με μνήμη 8 GB (πιο πρόσφατα Samsung S21, Flip3) συνήθως επέστρεφα μετά από ορισμένο χρόνο στην εφαρμογή που είχε ξεκινήσει προηγουμένως και ήταν ακόμα φορτωμένη στη μνήμη RAM, οπότε δεν ξεκινούσε από την αρχή και μπορούσα να πάρω ομαλά σταμάτησε. Από την άλλη, ακόμα και με 8GB μνήμης, «κατέβαζα» όλες τις εφαρμογές μια φορά την εβδομάδα για να καθαρίσω τη μνήμη RAM, γιατί το σύστημα άρχισε να επιβραδύνει με γεμάτη μνήμη. Δεν έχω πρόβλημα με την επιβράδυνση στο iPhone, αλλά από την άλλη, πρέπει να πω ότι όταν χρησιμοποιώ σχεδόν πανομοιότυπες εφαρμογές, αντίθετα, μου συμβαίνει τακτικά όταν επιστρέφω σε μια εφαρμογή που είχε ξεκινήσει προηγουμένως, φορτώνει πάλι εντελώς και δεν μπορώ να συνεχίσω ομαλά από εκεί που το άφησα .
Ποια επιλογή είναι καλύτερη; Δύσκολο να το πω… Το να σκοτώνεις εφαρμογές στο android και να καθαρίζεις τη μνήμη RAM είναι θέμα δύο κλικ. Η φόρτωση ολόκληρης της εφαρμογής ξανά στο iPhone δεν είναι τόσο χρονοβόρα, οπότε δεν έχει και τόση σημασία... Φυσικά, θα ήταν ιδανικό να έχετε περισσότερη RAM στο iPhone και multitasking όπως στο Android :-D
Σκατά, είναι πάλι ηλίθιο. Για ένα πράγμα, το Android δεν έχει γίνει σε Java για πολύ καιρό, γι' αυτό είναι το Kotlin. Ο σκουπιδοσυλλέκτης είναι υπεύθυνος για τη μνήμη, η οποία είναι η πιο απλή στο iOS, η οποία υπάρχει ακόμη και με τα μειονεκτήματά της. Το όλο θέμα είναι ότι το iOS σκοτώνει τις εφαρμογές μόλις τις βγάλεις από την οθόνη. Αυτό ελευθερώνει τη μνήμη ακριβώς όπως στο linux όταν πληκτρολογείτε kill pid μιας διαδικασίας. Γι' αυτό χρειάζεται τόσος χρόνος για να ανοίξετε το πρόγραμμα περιήγησης και να επιστρέψετε στην προηγούμενη εργασία. Αυτό το άρθρο είναι μια κατά λέξη μετάφραση ενός άρθρου X ετών από έναν φανατικό iOS χωρίς γνώσεις προγραμματισμού. Ναι, φυσικά, η διαχείριση της μνήμης είναι κυρίως ευθύνη του προγραμματιστή, τι κάνει η εφαρμογή. Αν βήξει πάνω του, υπάρχει διαρροή μνήμης στον κόσμο και pqk μπορείς να έχεις X Gb μνήμης και είναι ακόμα άχρηστο. Και σε μια εποχή που πολλές εφαρμογές είναι μόνο WebView, αυτό είναι πολύ απλό, γιατί η ίδια τρώει ό,τι μπορεί. Το άρθρο είναι ανοησία, σκουπίδια.
Το Android δεν χρησιμοποιεί πλέον jvm, αλλά dvm. Και επιπλέον, στη συνέχεια το μεταγλωττίζει σε εγγενές εκτελέσιμο αρχείο
Η Java είναι ακόμα στο Android.