Skip to content
This repository has been archived by the owner on Jul 30, 2024. It is now read-only.

MemoryProblem

Oskar Leirvåg edited this page Mar 8, 2019 · 1 revision

Date: 2019-05-03

Hva skjedde

Vi oppdaget et problem der RAM-bruken økte helt til all RAM'en var brukt opp. Dette førte til at spillet kræsjet.

Hvorfor skjedde dette

Problemet oppstod fordi hver Tile hentet sin texture når de ble instansiert. Så hver gang vi lagde en ny Tile, måtte programmet utføre en IO-operasjon. Som om det ikke var gale nok, så ble også samme IO-operasjonen utført hver gang vi kallet Tile.getSprite(). Tile.getSprite() blir kallt 60 ganger i sekunder, på over 100 tiles. I tillegg til det, så ble ikke spriten fra Tile.getSprite() garbage collected. Altså 6000 sprites ble lagt til i minnet i sekundet. Ops.

Hvordan ordnet vi problemet

Vi lagde en statisk klasse SpriteRenderer, som holder på alle Sprites. Når vi bruker Tile.getSprite(), henter vi bare referansen til spriten fra SpriteRenderer. Dette førte til at programmet nå kjører problemfritt.

Hvordan unngår vi dette i fremmtiden

Vi kan ta oss bedre tid til å tenke på og vurdere implementasjon, før vi koder det. Da kan vi unngå slike problemer tidlig, og vi trenger ikke å rette opp i det senere.

Clone this wiki locally