Telefonların sorunsuz çoklu görevler için ihtiyaç duyduğu ideal RAM miktarı oldukça tartışılan bir konudur. Apple, iPhone'larında genellikle Android çözümlerinden daha kullanışlı olan daha küçük bir boyuta sahip. Ayrıca iPhone'da herhangi bir RAM bellek yönetimi bulamazsınız, oysa Android'in bunun için kendi özel işlevi vardır.
Örneğin, Samsung Galaxy telefonlarına giderseniz Ayarlar -> Cihaz bakımı, burada ne kadar boş alan olduğu ve ne kadar yer kapladığı hakkında bilgi içeren bir RAM göstergesi bulacaksınız. Menüye tıkladıktan sonra her uygulamanın ne kadar hafıza kapladığını görebilir, ayrıca burada hafızayı temizleme seçeneğine de sahipsiniz. RAM Plus işlevi de burada bulunur. Bunun anlamı, sanal bellek için kullanacağı dahili depolama biriminden belirli sayıda GB'yi ısırmasıdır. İOS'ta buna benzer bir şey hayal edebiliyor musunuz?
Akıllı telefonlar RAM'e bağlıdır. Onlara işletim sistemini depolama, uygulamaları başlatma ve ayrıca bazı verilerinin önbellek ve ara bellekte saklanmasına hizmet eder. Bu nedenle RAM'in, uygulamaları arka plana atıp bir süre sonra tekrar açsanız bile sorunsuz çalışabilecek şekilde düzenlenmesi ve yönetilmesi gerekir.
Swift vs. Java
Ancak yeni bir uygulamayı başlatırken, onu yüklemek ve çalıştırmak için hafızada boş alana sahip olmanız gerekir. Aksi takdirde yerin boşaltılması gerekir. Bu nedenle sistem, halihazırda başlamış uygulamalar gibi çalışan bazı işlemleri zorla sonlandıracaktır. Ancak her iki sistem, yani Android ve iOS, RAM ile farklı şekilde çalışır.
İOS işletim sistemi Swift ile yazılmıştır ve iPhone'ların aslında kapalı uygulamalardaki kullanılmış belleği sisteme geri dönüştürmesine gerek yoktur. Bunun nedeni iOS'un geliştirilme şeklidir, çünkü Apple yalnızca iPhone'larında çalıştığı için iOS üzerinde tam kontrole sahiptir. Buna karşılık Android, Java ile yazılmış ve birçok cihazda kullanılıyor, dolayısıyla daha evrensel olması gerekiyor. Uygulama sonlandırıldığında kapladığı alan işletim sistemine iade edilir.
Yerel kod vs. JVM
Bir geliştirici bir iOS uygulaması yazdığında, onu doğrudan iPhone'un işlemcisinde çalışabilecek bir kod halinde derler. Bu koda yerel kod denir çünkü çalıştırılması için herhangi bir yorum veya sanal ortam gerektirmez. Android'de ise durum farklı. Java kodu derlendiğinde işlemciden bağımsız olan Java Bayt Kodu ara koduna dönüştürülür. Bu nedenle farklı üreticilerin farklı işlemcilerinde çalışabilir. Bunun platformlar arası uyumluluk açısından büyük avantajları vardır.
Tabii bunun bir de dezavantajı var. Her işletim sistemi ve işlemci birleşimi, Java Sanal Makinesi (JVM) olarak bilinen bir ortama ihtiyaç duyar. Ancak yerel kod, JVM aracılığıyla yürütülen koddan daha iyi performans gösterir; dolayısıyla JVM'nin kullanılması, uygulamanın kullandığı RAM miktarını artırır. Yani iOS uygulamaları ortalama %40 oranında daha az bellek kullanıyor. Bu aynı zamanda Apple'ın iPhone'larını Android cihazlarda olduğu kadar RAM ile donatmak zorunda kalmamasının nedeni de budur.
Tam olarak uzman değilim ama bakış açımı 15 yıldır android kullanan ve şu anda iPhone 2 mini'ye 13 ay kalmış bir kullanıcının bakış açısından anlatacağım. 8GB belleğe sahip Android'de (en son Samsung S21, Flip3) genellikle belirli bir süre sonra önceden başlatılan uygulamaya geri döndüm ve uygulama hala RAM'de yüklüydü, bu yüzden yeniden başlamadı ve sorunsuz bir şekilde istediğim yere devam edebildim. hariç tutulmuş. Öte yandan, 8 GB bellekle bile, RAM'i temizlemek için haftada bir kez tüm uygulamaları "düşürdüm" çünkü sistem tam bellekle yavaşlamaya başladı. iPhone'da yavaşlama sorunum yok ama öte yandan hemen hemen aynı uygulamaları kullanırken tam tersine daha önce başlattığım bir uygulamaya döndüğümde düzenli olarak başıma geldiğini de söylemeliyim. tekrar tamamen yükleniyor ve sorunsuz bir şekilde kaldığım yerden devam edemiyorum.
Hangi seçenek daha iyi? Söylemesi zor… Android'deki uygulamaları öldürmek ve RAM'i temizlemek iki tıklama meselesidir. Uygulamanın tamamını iPhone'a tekrar yüklemek o kadar zaman alıcı değil, dolayısıyla çok da önemli değil... Elbette iPhone'da daha fazla RAM olması ve Android'deki gibi çoklu görev yapabilmesi ideal olurdu :-D
Kahretsin, yine aptalca. Öncelikle Java'da Android uzun süredir yapılmıyor, Kotlin bunun için var. Çöp toplayıcı, iOS'ta en basit olan ve dezavantajlarıyla bile var olan hafızadan sorumludur. Sorun şu ki iOS, uygulamaları ekrandan kaldırdığınız anda öldürüyor. Bu, tıpkı Linux'ta olduğu gibi, bir işlemin kill pid'ini yazdığınızda belleği boşaltır. Bu nedenle tarayıcıyı açıp önceki çalışmaya dönmek bu kadar uzun sürüyor. Bu makale, programlama bilgisi olmayan bir iOS fanatiği tarafından yazılan X yıllık bir makalenin birebir çevirisidir. Evet, elbette, hafıza yönetimi esas olarak programcının, uygulamanın ne yaptığının sorumluluğundadır. Üzerine öksürürse dünyada hafıza sızıntısı vardır ve pqk X Gb hafızaya sahip olabilirsiniz ve hala işe yaramaz. Ve birçok uygulamanın yalnızca Web Görünümü olduğu bir zamanda, bu çok basittir çünkü kendisi elinden geleni yiyor. Makale saçmalık, çöp.
Android artık jvm'yi değil dvm'yi kullanıyor. Ayrıca bunu yerel bir yürütülebilir dosya halinde derler
Java hala Android'de.