ოპერატიული მეხსიერების იდეალური რაოდენობა, რომელიც ტელეფონებს სჭირდებათ მათი შეუფერხებელი მრავალდავალებისთვის, საკმაოდ საკამათო თემაა. Apple ახერხებს თავისი iPhone-ების უფრო მცირე ზომით, რაც ხშირად უფრო გამოსაყენებელია, ვიდრე Android გადაწყვეტილებები. თქვენ ასევე ვერ ნახავთ რაიმე სახის RAM მეხსიერების მენეჯმენტს iPhone-ზე, მაშინ როცა Android-ს აქვს ამისთვის გამოყოფილი ფუნქცია.
თუ მიდიხარ, მაგალითად, Samsung Galaxy ტელეფონებში ნასტავინი -> მოწყობილობის მოვლა, აქ ნახავთ ოპერატიული მეხსიერების ინდიკატორს, სადაც მოცემულია ინფორმაცია, თუ რამდენი სივრცეა თავისუფალი და რამდენია დაკავებული. მენიუზე დაწკაპუნების შემდეგ ხედავთ, რამდენ მეხსიერებას იღებს თითოეული აპლიკაცია და ასევე გაქვთ მეხსიერების გასუფთავების შესაძლებლობა აქ. RAM Plus ფუნქცია ასევე მდებარეობს აქ. მისი მნიშვნელობა იმაში მდგომარეობს, რომ ის ამოიღებს GB-ს გარკვეულ რაოდენობას შიდა მეხსიერებიდან, რომელსაც გამოიყენებს ვირტუალური მეხსიერებისთვის. შეგიძლიათ წარმოიდგინოთ მსგავსი რამ iOS-ზე?
სმარტფონები ეყრდნობა RAM-ს. ის ემსახურება მათ ოპერაციული სისტემის შესანახად, აპლიკაციების გაშვებას და ასევე მათი ზოგიერთი მონაცემის შესანახად ქეშსა და ბუფერულ მეხსიერებაში. ამრიგად, ოპერატიული მეხსიერება უნდა იყოს ორგანიზებული და მართული ისე, რომ აპლიკაციებმა შეუფერხებლად იმუშაონ, მაშინაც კი, თუ მათ ფონზე გადააგდებთ და ცოტა ხნის შემდეგ ხელახლა გახსნით.
სვიფტი vs. ჯავა
მაგრამ ახალი აპლიკაციის გაშვებისას, თქვენ უნდა გქონდეთ თავისუფალი ადგილი მეხსიერებაში მის ჩასატვირთად და გასაშვებად. თუ ეს ასე არ არის, ადგილი უნდა გათავისუფლდეს. ამიტომ სისტემა იძულებით შეწყვეტს ზოგიერთ მიმდინარე პროცესს, როგორიცაა უკვე დაწყებული აპლიკაციები. თუმცა, ორივე სისტემა, ანუ Android და iOS, განსხვავებულად მუშაობს RAM-თან.
iOS ოპერაციული სისტემა დაწერილია Swift-ში და iPhone-ებს რეალურად არ სჭირდებათ გამოყენებული მეხსიერების გადამუშავება დახურული აპებიდან სისტემაში. ეს გამოწვეულია iOS-ის აგებით, რადგან Apple-ს აქვს სრული კონტროლი მასზე, რადგან ის მუშაობს მხოლოდ მის iPhone-ებზე. ამის საპირისპიროდ, Android იწერება Java-ზე და გამოიყენება ბევრ მოწყობილობაზე, ამიტომ ის უფრო უნივერსალური უნდა იყოს. როდესაც აპლიკაციის შეწყვეტა ხდება, ის სივრცე უბრუნდება ოპერაციულ სისტემას.
მშობლიური კოდი vs. JVM
როდესაც დეველოპერი წერს iOS აპს, ისინი ადგენენ მას პირდაპირ კოდში, რომელიც შეიძლება იმუშაოს iPhone-ის პროცესორზე. ამ კოდს უწოდებენ მშობლიურ კოდს, რადგან ის არ საჭიროებს ინტერპრეტაციას ან ვირტუალურ გარემოს გასაშვებად. მეორეს მხრივ, Android განსხვავებულია. ჯავის კოდის შედგენისას ის გარდაიქმნება Java Bytecode შუალედურ კოდში, რომელიც დამოუკიდებელია პროცესორისგან. ამიტომ ის შეიძლება იმუშაოს სხვადასხვა მწარმოებლის სხვადასხვა პროცესორზე. ამას უზარმაზარი უპირატესობები აქვს პლატფორმებთან თავსებადობისთვის.
რა თქმა უნდა, არის უარყოფითი მხარეც. თითოეულ ოპერაციულ სისტემასა და პროცესორის კომბინაციას სჭირდება გარემო, რომელიც ცნობილია როგორც Java Virtual Machine (JVM). მაგრამ მშობლიური კოდი უკეთესად მუშაობს, ვიდრე JVM-ის მეშვეობით შესრულებული კოდი, ამიტომ JVM-ის გამოყენება უბრალოდ ზრდის აპლიკაციის მიერ გამოყენებული ოპერატიული მეხსიერების რაოდენობას. ასე რომ, iOS აპები ნაკლებ მეხსიერებას მოიხმარენ, საშუალოდ 40%. ამიტომაც Apple-ს არ უწევს თავისი iPhone-ების აღჭურვა იმდენი ოპერატიული მეხსიერებით, რამდენიც ანდროიდის მოწყობილობებს.
მე არ ვარ ზუსტად ექსპერტი, მაგრამ ჩემს პერსპექტივას აღვწერ იმ მომხმარებლის პერსპექტივიდან, რომელიც იყენებს ანდროიდს 15 წლის განმავლობაში და ახლა უკვე 2 თვეა iPhone 13 mini. ანდროიდზე 8 GB მეხსიერებით (ბოლოს Samsung S21, Flip3) მე ჩვეულებრივ ვბრუნდებოდი გარკვეული დროის შემდეგ ადრე გაშვებულ აპლიკაციაში და ის კვლავ ჩატვირთული იყო RAM-ში, ასე რომ თავიდან არ დაწყებულა და შემეძლო შეუფერხებლად აეღო, სადაც მე ვიყავი. დატოვებული. სამაგიეროდ 8 GB მეხსიერებითაც კვირაში ერთხელ ყველა აპლიკაციას "ვაგდებდი" RAM-ის გასასუფთავებლად, რადგან სისტემამ სრული მეხსიერებით დაიწყო შენელება. აიფონზე შენელების პრობლემა არ მაქვს, მაგრამ, მეორე მხრივ, უნდა ვთქვა, რომ თითქმის იდენტური აპლიკაციების გამოყენებისას, პირიქით, რეგულარულად მემართება, როცა ადრე გაშვებულ აპლიკაციას ვუბრუნდები, ის ისევ მთლიანად იტვირთება და არ შემიძლია შეუფერხებლად გავაგრძელო იქ, სადაც დავტოვე.
რომელი ვარიანტი ჯობია? ძნელი სათქმელია… ანდროიდზე აპების მოკვლა და ოპერატიული მეხსიერების გასუფთავება ორი დაწკაპუნებით არის საქმე. iPhone-ზე მთლიანი აპლიკაციის ხელახლა ჩატვირთვა არც ისე შრომატევადია, ამიტომ დიდი მნიშვნელობა არ აქვს... რა თქმა უნდა, იდეალური იქნება, რომ მეტი ოპერატიული მეხსიერება იყოს iPhone-ზე და მულტიტასკინგი, როგორც ანდროიდზე :-D
სისულელეა, ისევ სისულელეა. ერთი რამ, ანდროიდი დიდი ხანია ჯავაში არ კეთდება, სწორედ ამისთვისაა კოტლინი. ნაგვის შემგროვებელი პასუხისმგებელია მეხსიერებაზე, რომელიც ყველაზე მარტივია iOS-ში, რომელიც არსებობს თავისი მინუსებითაც კი. ყველაფერი ის არის, რომ iOS კლავს აპებს, როგორც კი ეკრანიდან ამოიღებთ. ეს ათავისუფლებს მეხსიერებას ისევე, როგორც ლინუქსში, როდესაც აკრიფებთ kill pid პროცესს. ამიტომაც ამდენი დრო სჭირდება ბრაუზერის გახსნას და წინა სამუშაოს დაბრუნებას. ეს სტატია არის X წლის წინანდელი სტატიის სიტყვასიტყვით თარგმანი iOS-ის ფანატიკოსის მიერ, პროგრამირების ცოდნის გარეშე. დიახ, რა თქმა უნდა, მეხსიერების მართვა ძირითადად პროგრამისტის პასუხისმგებლობაა, რასაც აპლიკაცია აკეთებს. თუ ახველებს, მსოფლიოში მეხსიერების გაჟონვაა და pqk შეიძლება X გბ მეხსიერება გქონდეს და მაინც უსარგებლოა. და იმ დროს, როდესაც ბევრი აპლიკაცია მხოლოდ WebView არის, ეს ძალიან მარტივია, რადგან ის თავად ჭამს იმას, რაც შეუძლია. სტატია სისულელეა, ნაგავი.
Android აღარ იყენებს jvm-ს, არამედ dvm-ს. და გარდა ამისა, ის შემდეგ აგროვებს მას მშობლიურ შესრულებად
ჯავა ჯერ კიდევ ანდროიდშია.