Java: Svar på övning 1 från föreläsning 9

Av Thomas Padron-McCarthy (Thomas.Padron-McCarthy@tech.oru.se). Senaste ändring 23 november 2003.

Övning: När programmet FileCounter3 kraschar, med felet Too many open files, börjar skräpsamlaren kasta bort de allokerade MyFileObject-instanserna. Men den stannar när det finns 35 instanser kvar. Varför räknar den inte ner till 0?

Svar: Skräpsamlaren är en stödfunktion till Java-programmet, och den körs i en annan tråd. När själva programmet, dvs (i det här fallet) den tråden som kör main-metoden är avslutad, finns det ingen anledning att låta skräpsamlaren köra vidare, utan hela Java-maskinen avslutas. Skräpsamlarens tråd hinner skräpsamla en del av MyFileObject-instanserna, men det är fortfarande några kvar när den dör.