Categories
Swedish

Problem med minnet

Jag vet inte om ni någonsin haft problem med minnet. Minnsläckor alltså. Minnesfragment som ligger där och skräpar helt okontrollerat efter det att man är klar med en uppgift. Så är det i all afall för mig just nu. Eller snarare har varit dom senaste dagarna.

Jag håller nämligen på att jobba med daemonen (ung. server programmet) för VSCP. Det här är en ganska avancerad bit programvara där en massa programtrådar, normalt tio men ibland upp till femtio stycken eller fler, skall dela och samverka på/om ett antal objekt. För det behövs semaphorer och mutexar för att hindra flera trådar från att krocka med varandra. För er som inte programmerar jämför en bangård med ett aktivt lok + tågset motsvarande varje tråd. Det är alltås en fördel om man koncentrerar sig när man sitter med sånt här.

Hursomhelst är ett av problemen när en tråd avslutas är att allokerade resurser skall lämnas tillbaks till operativsystemet. I mitt fall skrivs programmet samtidigt för Windows och Unix/Linux så det blir ännu lite extra att tänka på. Ofta tänker man fel här och man får s.k. minnesläckor. En minnesläcka allokerad minnsdel som inte har lämnats tillbaks när programmet har avslutats. Har man nu +10 trådar och många objekt i sitt program som skapas och tas bort medans programmet körs så kan detta kräva sin man. Rent tröstlöst ofta för det enda man ser är att typ 32 byte inte har återlämnats till systemet. Frågan är naturligtvis var dessa 32 byte kommer ifrån?

Så det gäller att prova sig fram. Koppla bort bit för bit av funktionalitetet. Starta och återstarta programmet tills man lyckas hitta läckan. Ofta handlar det om en dag innan man hittar bara en ena så när den är hittad så är det bara att starta om allt igen och leta nästa.

Så har jag alltså tillbringar de senaste dagarna. Under eftermiddagen igår så hittade jag den sista. Skönt. Systemet, alla trådarna, meddelanden, flödet snurrar som en v8 motor och man vet att det inte läcker. Allt känns stabilt och man kan äntligen börja lägga till lite roliga saker. Ni vet smågrejer som man alltid velat ha med. Sånt som användarna ser. För så är det. Ingen användarna bryr sig ett dugg om det man just ägnat veckor åt så länge det fungerar, hur vacker en ny tråd tar vid efter en annan, hur effektivt en drivare skickar sitt meddelande genom systemet ut till klienten. Inte så länge motorn snurrar och fungerar. Det är bara yta som intresserar dom. Mer funktioner åt folket helt enkelt!

Kan inte fatta varför jag älskar det här jobbet…..

Lämna en kommentar

This site uses Akismet to reduce spam. Learn how your comment data is processed.