När Android-enheter börjar röra sig mot 6 GB RAM måste vi ställa oss denna fråga: Hur mycket RAM behöver vi egentligen? Följ med när vi utforskar!
Nyligen bjöds vi på tillkännagivanden om en av de första smartphones med Android som kommer med 6 GB RAM.
6 jäkla GB! Det är mycket RAM i en mobil enhet.
Att starta nummerspelet är Vivo Xplay5 Elite. Vivo som företag kanske inte är särskilt välkänt utanför Kina, men företaget har, till sin kredit, gjort några riktigt tunna smartphones tidigare. Med Xplay5 Elite försökte de passa in många specifikationer i en enhet som syftar till att stå bland kungar.
Vivo Xplay 5 Elite har en dubbelböjd 5,43" QHD Super AMOLED-skärm på en metallram för kroppen. Inuti finns den senaste Qualcomm Snapdragon 820 SoC klockad till 2,15 Ghz, Adreno 530 GPU, 6 GB LPDDR4 RAM och 128 GB icke-expanderbart lagringsutrymme. För kameran är baksidan en 16MP Sony IMX298-sensor med f/2.0 och framsidan är en 8MP-shooter. Med tanke på dessa specifikationer och enhetens metalliska konstruktion bör det inte vara någon överraskning att det skulle kosta en del även för den kinesiska konsumenten. Med en prislapp på CNY 4 288 ($ 660) är detta verkligen ett kinesiskt flaggskepp snarare än en prisvärd mellanklass.
Vivo Xplay5 Elite är inte den enda smarttelefonen just nu med 6 GB RAM. En mindre känd och nygrundad kinesisk OEM, Vernee, siktar på att ge större konsumenttillgänglighet till gigantiska mängder RAM genom att lansera en medelstor enhet, Vernee Apollo.
Vernee Apollo kommer att bära MediaTeks avancerade SoC, Helio X20. Det kommer att finnas ovan nämnda 6 GB RAM, 128 GB internminne, en 21 MP Sony IMX230 bakre kamera och en 5,5" 2K-skärm. Med allt detta skulle Apollo kosta $399,99. Pressinformationen som skickades till oss nämnde inte ett kinesiskt pris eller om målmarknader, så telefonen är fortfarande en hel del mystik.
Båda dessa telefoner ber oss att ställa frågan, gör vi behöver verkligen så mycket RAM just nu?
För att svara på denna fråga måste vi förstå hur Android hanterar minneshantering och RAM. Mishaal gjorde ett fantastiskt jobb med att förklara krångligheterna i Androids minneshantering en tidigare artikel, som fortfarande behåller sin relevans sex månader senare.
"Sättet Android hanterar minneshantering är som så: snarare än att omedelbart döda varje process efter att dess aktivitet avslutats (som när du trycker på hemknappen för att avsluta en app), hålls processen i minnet tills systemet behöver döda den för att frigöra mer minne. Hur avgör systemet vilka processer som ska behållas och vilka som ska dödas? LMK-föraren (Low Memory Killer). Varje process tilldelas ett oom_adj-värde som sträcker sig från -17 till 15 av ActivityManager Service, som dynamiskt justerar oom_adj-värdet beroende på processens betydelse. Högre oom_adj-värden betyder att processen är mer sannolikt att dödas för att frigöra minne, medan lägre värden betyder att processen är mindre sannolikt att dödas."
"Android kategoriserar varje process i fem kategorier (Förgrund, Synlig, Service, Bakgrund och Tom) allt från viktigast till minst viktigt för att fortsätta köra. Processer som tillhör varje kategori dödas vid olika nivåer av ledigt minne som återstår (kallat LMK minfree-värde). Till exempel, om din enhets LMK minfree-värden är inställda på "2560,4090,6144,7168,8192" (anges som 4k sidor, som kan läsas från /sys/module/lowmemorykiller/parameters/minfree) då din enhet kommer att döda processer definierade som "Tom" när ditt lediga minne faller under 32MB, processer definierade som "Bakgrund" när ledigt minne är under 28MB, och förgrundsappar när ledigt minne faller under 10 MB (himlen förbjuda!) Nu är dessa minfree-värden inte typiska på de flesta enheter nuförtiden eftersom tillverkare älskar att justera dessa efter deras smak beroende på hur de tycker att det passar deras enhet bäst. Men vad du bör ta bort från denna korta förklaring är att ju mer ledigt minne du har, desto mindre sannolikt kommer du att se kritiska processer dödas."
Som Mishaal nämner varierar de faktiska värdena från OEM till OEM, så du kan ha olika erfarenheter av multi tasking på olika telefoner med liknande specifikationer. En annan variabel i blandningen är mängden bloatware på enheten. Kraftigt modifierade Android UX som TouchWiz tenderar att packa in många funktioner utöver Android baserat på lager AOSP, och som sådan, kräver mycket mer resurser för att allokeras till systemet för att fungera på den nivå som OEM önskade det till. Detta lämnar mindre utrymme för appar från tredje part att cachelagras, vilket i sin tur förvärrar dödandet av lågt minne.
För det mesta Mjuk
"Den största skillnaden mellan en enhet med 2 GB RAM mot en enhet med 3 GB RAM är att enheten med 3 GB RAM ska kunna cachelagra fler processer i bakgrunden utan att trigga LMK-drivrutinen att döda den."
Så teoretiskt sett borde mer RAM tillgängligt på hårdvarunivå leda till att fler processer kvarstår cachade på OS-nivå och en större pool för OEM att ta del av. Men oftare än inte, även på enheter med 2 GB RAM, ser du mycket mer ledigt RAM även efter att systemet och apparna har låst sig till det de behöver. Här är samma galleri från Mishaals inlägg, som jämför gratis RAM över olika enheter:
Som du kan se har enheter med det lättaste användargränssnittet, som Nexus 5 och Nexus 6, den största andelen ledigt RAM-minne på enheten. Även den tyngsta av dem alla, Samsung Galaxy Note 5 med 4 GB RAM och TouchWiz att starta upp, har cirka 1,7 GB RAM som är tillgängligt för app-cache. Även med en så stor pool av ledigt RAM, led Note 5 av multitasking-problem där enheten skulle ta till aggressiv minneshantering. Detta berodde på OEM: s val av LMK-värden: att pumpa in mer RAM på hårdvarunivå hjälper inte! Fixningen för Note 5 för att förbättra multitasking innebar faktiskt att justera dessa LMK-värden för att vara mer multitasking vänlig än Samsungs aktieinställningar, vilket är ironiskt för en enhet som fokuserade på produktivitet. Som sådan kommer bara att ha mer RAM inte automatiskt göra enheten mer multitaskingvänlig.
För att komma tillbaka till galleriet igen, används en del av det fria RAM-minnet som visas redan för cachelagring av appprocesser, men en del av detta förblir faktiskt inaktivt och gör ingenting. Här är några skärmdumpar från min OnePlus One som visar det lediga RAM-minnet som visas och sedan uppdelningen i cachad RAM och ledig RAM:
Även i den lilla ~1 sekund som det tog mig att byta ur ett aktivt spel och välja alternativet för att visa cachade processer, fungerade systemet för att trimma ner det faktiska använda RAM-minnet. Detta hände eftersom spelet, NFS No Limits i det här fallet, hade en förändring i prioritet, och flyttade från en förgrundsprocess till en bakgrundsprocess. Detta gjordes i syfte att hålla operativsystemet smidigt hela tiden, eftersom RAM-minnet under aktiv användning ändrades från 2,5 GB till 1,9 GB, medan NFS No Limits-spelprocessen cacheades. När spelet ändrades i sin prioritet är det nu dödbart om operativsystemet faktiskt behöver mer ledigt RAM-minne. Det krävs ingen användarinteraktion här.
Poängen med det här exemplet var att belysa hur Androids minneshantering har utvecklats för att vara mer effektiv när det gäller att prioritera systemet och alla dess processer. Det finns bara så många appar som kommer att förbli cachade när som helst: operativsystemet använder helst inte hela det lediga RAM-minnet i cachningsprocesser. En del av det lediga RAM-minnet lämnas i viloläge. Detta är designat, för tillfällen då en process kan behöva skala upp sin RAM-användning mycket snabbt.
Det finns också ett RAM-allokeringstak för appprocesser, som definierats av OEM igen för enskilda telefoner. Enligt en gammalt diskussionsinlägg av Dianne Hackborn, Android Framework Engineer, finns det en gräns för Java-hög där java-objekt kommer att finnas innan sophämtning påbörjas, men även det kan utökas med smart användning av NDK. Med enkla ord betyder detta att det finns ett maximalt tak på RAM-minnet som var tillgängligt för alla appar som ville köra på den enheten. För äldre enheter var denna hög inställd på 24MB, men på de senaste enheterna har storleken ökats tack vare ökningen av RAM i enheter samt ökade hårdvarukrav. Androids Kompatibilitetsdefinitionsdokument för Android 6.0 nämner (avsnitt 3.7) de minimivärden som dessa högar bör ställas in av OEM. Som jämförelse kan nämnas att min OnePlus One på CM12.1 har en gräns på 192 MB för normala Dalvik VM-högar och tillåter så mycket som 512 MB för appar som anger android: largeHeap=true i deras applikationsmanifest. Teoretiskt sett kan en enda app bara använda upp till 512 MB RAM på min enhet. Utöver det kommer sophämtning att initieras för att hålla de andra nödvändiga systemprocesserna fritt flytande.
Kombinera nu högstorleksgränsen för appar med LMK-värden som tilldelats dem baserat på deras prioritet och OS: s insisterande på att hålla en viss mängd ledigt RAM-minne inaktivt, och du kan föreställa dig hur Android har flera uppgifter Arbetar. Det är en komplex mekanism som involverar många variabler mellan hårdvaran, mjukvaran och själva appen; finjusterad för att tillåta även de mest grundläggande enheterna att fungera samtidigt som de bästa flaggskeppen kan dra absolut fördel av sin potential, teoretiskt sett. Praktiskt taget är detta inte en perfekt värld, så ingen av dessa händer. Det betyder att det inte finns någon garanti för att en enhet med 4 GB RAM kommer att fungera lika bra som en annan med 4 GB RAM. Det betyder inte heller att ett extra GB RAM-minne över en viss tröskel ger dig en direkt proportionell ökning av multitasking och minneshantering.
Det praktiska & framtiden
Så för att återgå till den ursprungliga frågan, behöver du verkligen 6 GB RAM i dina enheter i början av 2016? För mig är svaret nej.
De flesta enheter jag äger har 3 GB LPDDR3 RAM, och en har 4 GB RAM. Och det är helt enkelt ingen märkbar skillnad i prestanda när det kommer till multitasking. Här är en multitasking-demo från min senaste OnePlus X-recension, en enhet med 3 GB RAM och en nära lager Android ROM:
Enheten hade inga problem med att växla mellan 12 appar (13 om du räknar med den aktiva skärminspelaren) utan att behöva döda någon av dessa appar. Det fanns ingen omladdning och ingen omritning, och denna upplevelse förblir förvånansvärt konsekvent under daglig användning utan några omstarter eller manuell appdöd. En normal konsument har helt enkelt inget behov av att aktivt växla mellan dessa många appar under praktisk användning!
Men vad händer om användaren istället vill byta mellan dessa många spel? Överens om, faktorer som nämns ovan skulle spela in för att i bästa fall tillåta byte mellan endast ett fåtal spel. I ett sådant tillstånd skulle mer fysiskt RAM-minne låta enheten hålla fler spel passivt i minnet. Men en motpol till denna fördel är att många spel ofta gör en kraftladda om sig själva vid multitasking! Deras avsikt är att undvika fuskmekanismer från att manipulera speldata medan spelet körs, så en omladdning/omsynkronisering/uppdatering tvingar integritetskontroller att träda igång igen. Deras avsikt är annorlunda, men detta gör många spel dåliga kandidater att multitaska mellan.
Det finns ytterligare några faktorer också, som skulle hindra dig från att dra nytta av allt det härliga RAM-minnet. Om du hittar en uppgift/flera uppgifter i kombination som kräver alla 6 GB av din enhets LPDDR4 RAM, skulle du ha en mycket större flaskhals i form av den mobila SoC. Visst, Snapdragon 820 och Helio X20 kan vara flaggskeppsprocessorerna för sina respektive företag, men de är fortfarande mobila SoC. Som sådana har de andra begränsningar som värmegenerering, värmeavledning, termisk strypning och batteri liv vilket skulle göra dem dåliga val för uppgifter som är tillräckligt intensiva för att använda så mycket RAM under en längre period av tid. I sådana fall är det bättre att använda ett system som inte är avsett att hållas i handen; en som har mer liberala gränser för den värme den kan generera och den ström den kan förbruka.
I slutet av dagen, oavsett hur mycket ledigt RAM-minne du har, kommer appar fortfarande att kastas ut. Det är bara så minneshantering fungerar. Det finns fortfarande fördelar med att gå stort på RAM, som en ytterligare ökning av högstorleken kommer att hjälpa till driver bitmappstillgångar på skärmar med högre upplösning, vilket gör att vi kan gå längre än QHD-upplösningar på våra enheter. En ökad högstorlek som en trend över marknaden kommer att leda till appar som kan sträva efter att göra mer. Såvida inte RAM är låst som oberörbart, kommer det alltid att finnas någon eller annan användning för det. Men med tanke på att skärmar till synes svävar mellan 1080p och 1440p på flaggskepp, kan vi se 4GB som en rimlig standard för ytterligare ett eller två år.
Som avslutning får vi svara på frågan: gör vi behöver verkligen så mycket RAM just nu? Nej, det gör vi inte. För enheter som har pris som en av faktorerna som de behöver för att hålla låga, skulle 3 GB eller 4 GB RAM tjäna dem tillräckligt bra. För flaggskepp med efterfrågan från användare som inte bryr sig lika mycket om priserna skulle det inte skada framtida bevis. Som kund, notera bara att du inte kommer att använda allt RAM-minne ännu.
Vad tycker du om telefoner med 6 GB RAM? Låt oss veta dina tankar i kommentarerna nedan!