I detta arbetet undersöks vilka olika effekter en lumpsamlare har på en spelmiljö. Detta mäts genom att räkna hur många objekt existerar i spelmiljön och hur hög bildhastighet spelmiljön arbetar på. För att testa detta så designades ett enkelt shoot-’em-up spel. I spelet styr en primitiv AI ett rymdskepp som skjuter på en grupp asteroider som datorn skapar. Problemet för spelet är att datorn konstant skapar dessa asteroider och skeppet skapar kulor för att skjuta på dem. Det finns inte en övre gräns hur många asteroider och kulor som kan finnas i spelet. Detta problemet blir värre för att datorn tar inte bort dessa objekt. Under spelets gång uppdateras båda typerna av objekt. Detta resulterar i att den ökande mängden med objekt kommer dra ner hur hög bildhastighet spelet arbetar på. För att testa hur lumpsamlare påverkar spelet implementerades tre enkla lumpsamlare. I detta fallet är det “Reference counting”, “Mark-Sweep”, och “Mark-Compact” lumpsamlare. För att jämföra med hur dessa påverkade spelet så gjordes också en version som tog bort objekten manuellt Versionerna med lumpsamlare och versionen som själv tog bort objekt förväntades att kunna spela spelet med en bildhastighet på 45 FPS. 45 FPS är en hastighet som inte påverkar en spelares prestation medans lägre hastigheter kan negativt påverka en spelares prestation. Testerna visar att versionerna med lumpsamlare presterade sämre än versionerna som tog bort objekten manuellt. Det var enbart den manuella versionen som kunde agera på över 45 FPS och den versionen hade också lägsta antalet objekt i spelet. Testen var dock orättvist designad mot lumpsamlare versionerna då de var tvungna att arbeta med ett ansträngande test för en dator. Detta var menat men det är fortfarande mer extremt än vad som normalt är förväntat att en lumpsamlare ska behöva arbeta med. Ett annat problem som bara berörde Mark-Compact lumpsamlaren var att den stora fördelen med en Mark-Compact Lumpsamlare är inte utnyttjad i detta testet. Denna fördel är att under normala förutsättningar kan det bli “hål” i ett minne när information tas bort, Mark-Compact lumpsamlaren sparar över dessa hål med information.
This thesis explore the effects that garbage collection has in a real time game. This is measured by counting the number of objects and the framerate in a game that is intentionally created to be very taxing memory-wise. A game was designed in a simple shoot-’em-up style. A simple AI is in control of a spaceship shooting at constantly spawning asteroids. Neither the asteroids nor the bullets will be deleted when the program is running. This results in a growing number of objects which will slow down the framerate noticeably. Both types of objects will continue to be updated, thus becoming a larger and larger burden for the game to handle. To test how garbage collectors would affect the game three garbage collection algorithms were implemented in the game, in this case; a Reference Counting Collector, a Mark-Sweep Collector, a Mark-Compact Collector, and one version of the game that manually deletes objects. Each garbage collector and the manually handled game was expected to be able to run above 45 Frames per second while having the lowest number of object in play simultaneously. 45 FPS is a framerate that does not efet how well a player can play a game. Lower framerate on the other hand can have a negative effect on a players performance. The conclusion of this paper is that the versions of the game with the garbage collectors performed worse than the manual deletion. Only manual deletion was able to keep above the 45 FPS requirement and had a lower number of objects in play. The test was however unfairly stacked against the garbage collectors as the test forced them to have a heavy workload. Another problem that was unique for the Mark Compact Garbage Collector is that the main issue that a Mark Compact Garbage Collector addresses is not accounted for in the program. The advantage a Mark Compact Garbage collector provides is that normal garbage collectors can create “holes” in the memory when information is deleted. Mark Compact Garbage Collectors solve this issue by overriding these holes with information when cleaning up the memory.