-
Notifications
You must be signed in to change notification settings - Fork 1
MemoryProblem
Date: 2019-05-03
Vi oppdaget et problem der RAM-bruken økte helt til all RAM'en var brukt opp. Dette førte til at spillet kræsjet.
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.
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.
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.