Petteri Pyyny
16. marraskuuta, 2014 18:04
Yksi suurimpia ihmettelyn aiheita syksyisen iPhone 6-lanseerauksen yhteydessä oli, että Apple piti edelleen iPhonen RAM- eli käyttömuistin määrän yhdessä gigatavussa.
Samaan aikaan kuitenkin Android-huippumallit ovat pikkuhiljaa nostaneet RAM-muistin määrän vuoden takaisesta kahdesta gigatavusta kolmeen gigatavuun. Kysymys kuuluukin: Miksi Android vaatii kolme kertaa enemmän muistia toimiakseen sulavasti?
Vastaus tähän löytyy Quorassa julkaistusta varsin perusteellisesta vastauksesta: Android käyttää Javaa ja Javassa on mekanismi, jota kutsutaan garbage collectoriksi. Kyseinen mekanismi kierrättää käyttömuistia, joka vapautuu suljetulta sovellukselta. Ongelmaksi muodostuu se, että jos suljettu sovellus pyöriessään vaati vaikkapa 200 megatavua muistia, Javan garbage collector vaatii 3-4x tuon määrän muistia "kierrätysprosessinsa" aikana toimiakseen mahdollisimman sujuvasti. Eli vaikka käytetty ohjelma tarvisti vain 200 megatavua muistia, sen sulkeminen vaatii 600-800 megatavua muistia, jos muistin kierrätyksen halutaan tapahtuvan mahdollisimman nopeasti. Jos tuota vaadittua muistitilaa ei ole saatavilla, gargabe collectorin toiminta hidastuu merkittävästi, joka taas "tahmauttaa" koko järjestelmää kunnes muisti saadaan kierrätettyä.
iOS:ssa muistin vapautus toteutetaan eri tavalla, jolloin muistia ei vaadita kuin sen verran mitä varsinaiset käynnissä olevat ohjelmat vaativat.