Какво е виртуална RAM в Android и трябва ли да ви пука
Miscellanea / / March 16, 2022
Освен от огромни мегапиксели на камерата и дисплеи с висока честота на опресняване, най-голямата тенденция в света на смартфоните изглежда е виртуалната RAM памет. Някои го наричат динамично разширение на RAM, докато други го наричат разширена RAM. Независимо как се нарича, идеята остава същата. Позволете на потребителите да използват част от паметта си като RAM, за да подпомогнат многозадачността.
![](/f/916d140fd5d0f900d5417754472e0335.jpg)
В това ръководство ще обсъдим как работи управлението на паметта в Android и как идеята за виртуална RAM се различава от нея. Ще се опитаме да обмислим дали виртуалната RAM дори е необходима на Android или не. Така че нека да стигнем до него.
Как работи управлението на паметта на Android
Първо, важно е да разберете как Android управлява паметта ви. В Android има 3 вида памет. Първо е вашата RAM, след това имате zRAM и накрая вашето хранилище. RAM е основният модул памет, в който работят всички приложения. След това има вашето вградено хранилище, UFS или eMMC на бюджетни устройства. И накрая, имаме zRAM. По същество zRAM е дял вътре в RAM.
Идеята зад zRAM е, че данните с нисък приоритет в RAM се компресират и съхраняват в zRAM. Тъй като RAM е всеки ден по-бърза от нормалното ви хранилище, компресираните данни в zRAM, която е част от RAM, е все пак ще бъде по-бързо от достъпа до него извън вашето хранилище, дори ако преброите времето за компресиране и декомпресиране.
![](/f/47c668d1ba870b9177852045ffe6b9b4.png)
Сега, когато установихме 3-те различни типа памет, достъпна за Android, нека разберем как ОС се справя с всичко. Така че Android използва техники за пейджинг. Функционирането му е, че RAM паметта е разбита на страници, като всяка страница обикновено е от 4KB. Независимо дали тази страница е безплатна или активно се използва, те се комбинират, за да покажат съответно използвана RAM и неизползвана RAM. След това задачата на ядрото е да преобразува използваната памет в свободна памет. Това става чрез преместване на данните на тези използвани страници във вашето хранилище.
Какво е пейджинг и как работи
За да разберем как работи, нека разберем видовете страници. Можете да класифицирате страниците в два типа – чисти и мръсни страници. Чистите страници имат непроменено копие, запазено в пространството за съхранение. Междувременно мръсните страници имат модифицирано копие на данните, съхранявани в хранилището. Сега, какво е това модифицирано и немодифицирано? Нека го наречем динамично използване на вашата памет.
Немодифицираните копия са статични данни, докато модифицираните копия са динамични данни, които се променят всяка секунда. Android може да изчисти чистите страници, когато е необходимо, тъй като те нямат динамичен достъп до ресурсите. Това помага да се освободи RAM паметта и да се направи повече от нея достъпна. Това може да звучи твърде техническо, така че нека да го направим по-лесно за разбиране с помощта на приложения от реалния свят.
![](/f/16f58a8037a3d1082f73cba81964e750.png)
Да предположим, че отворите Twitter, прегледате вашата емисия и след това преминете към нещо друго. Twitter все още е там във вашата RAM памет. Но ако не го отворите известно време, приоритетът му намалява. По-късно, ако стартирате нещо ново, Android ще трябва да освободи паметта, която Twitter използва. Така че това, което прави, е, че премества своите стойности и данни към хранилището и ви дава свободно място. Ето защо, когато стартирате Twitter отново, той първо ще ви покаже времевата линия, в която е бил хиберниран, и след това ще се опресни. Същото важи и за Facebook, Reddit или подобни приложения като Калкулатор или Бележки. Тези приложения използват чисти страници, тъй като копие на техните данни се запазва статично във вашето хранилище.
![](/f/577b8339e6679010d717056b5ed7fbb6.png)
Сега, за мръсни страници, помислете за Spotify или всеки музикален плейър. Стартирате музика в плейъра и след това я поддържате да работи във фонов режим, без да отваряте приложението. Въпреки това, системата не може да го затвори, тъй като динамично използва вашата памет. В резултат на това Android компресира приложението и го премества към zRAM, когато се изисква повече свободна RAM.
Какво е виртуална RAM
След като вече знаете как Android управлява паметта, трябва да се чудите – откъде идва функцията за виртуална RAM? Спомняте ли си как казахме, че zRAM също е част от RAM? Начинът, по който виртуалната RAM работи е, че създава суап дял на вашето пространство за съхранение и го използва като допълнителна zRAM.
![](/f/239f2b6903b57b29dca1bc02631ba50b.png)
Тъй като zRAM се съхранява само във вашата RAM, има ограничение за броя на страниците, които можете да компресирате и съхранявате в него. С суап дял можете да използвате вашето място за съхранение като допълнителна zRAM за компресиране и преместване на приложения, като същевременно предоставяте място в действителната си RAM памет.
Нова ли е тази функция
И така, всичко това ново ли е? Е, не наистина. Linux използва суап дялове от самото начало. За Android потребителите на персонализирано ядро са използвали своите SD карти, за да създават допълнителни суап дялове, за да подобрят управлението на паметта.
Като такива, производителите на марки просто ви дават същата функция, изпечена в техните Android кожи. Въпреки това, възниква въпросът – ако функцията е толкова полезна, защо не е част от изходния код на Android?
Виртуалната RAM е добра или лоша
Отговорът се крие в самата основна работа на самата виртуална RAM. Въпреки че функцията ви позволява да стартирате повече приложения на вашето устройство чрез компресиране на хибернирани приложения и преместването им във вашето хранилище, тя носи повече вреда, отколкото полза. Тъй като суап дяловете по същество съхраняват активни приложения, има по-голямо усещане за четене и писане.
Това работи добре при традиционното съхранение, но флаш паметта има ограничен брой четения и записвания. Така че, като използвате SWAP или виртуална RAM, вие технически намалявате живота на вашето устройство за съхранение.
Това също е подчертано добре Страница за програмисти на Android. „На Android съхранението не се използва за суап пространство, както е в други реализации на Linux, тъй като честото писане може причиняват износване на тази памет и съкращават живота на носителя за съхранение." Друг пример за това е в новия Apple M1 MacBooks. Тези машини използват суап дял на SSD на Apple, за който потребителите се оплакват доста.
Има ли значение виртуалната RAM памет и трябва ли да я използвате
По същество всичко зависи от това как дефинирате многозадачността. Ако жонглира само между две до три активни приложения, тогава със сигурност виртуалната RAM помага за това. Но ако продължите да превключвате между 5-6 силно активни приложения, виртуалната RAM няма да направи нищо, защото ще продължи да измества приложенията.
В основата си функцията за виртуална RAM ви позволява повече RAM пространство, налично за стартиране на приложения. Това обаче идва за сметка на вашето съхранение. Ако възнамерявате да продължите да използвате устройството си повече от две години, смятаме, че използването на виртуална RAM може да няма много смисъл.