Jag har skrivit ett gäng rader kod som
ligger och pollar irc kanaler på det som skrivs och skriks. Allt detta stoppas in i en anonym hash med ett antal nycklar (varav en är en array). Datan i hashen läses sedan kontinuerligt och trycks in i en mysql databas.
Problemet är minnesutnyttjandet, det växer , och det växer fort.
Först trodde jag att det berodde på att hashen inte rensades / frigjorde det minne den snott åt sig, så jag tömde / undeffade etc den på alla möjliga sätt å vis - men detta hjälper inte !
Sen övervägde jag lokala variabler i loopar , så jag tog bort alt. definerade om alla - till ingen nytta.
Så , hur kan jag (utan att använda Dev::Leak för jag får inte lägga till sånt för min ISP) på smart sätt se vad det är som snor minne ?
Finns inga minnesläckor i Perl. Perl tar hand om sådana saker automatiskt. När en variabel inte används längre så frigör Perl minnet som den variabeln tog upp. :)
Minnesläckor hör främst till C-relaterade språk som har pekare och där programmeraren måste allokera minne manuellt.
Minnesläckor hör främst till C-relaterade språk som har pekare och där programmeraren måste allokera minne manuellt.
Nja, det går ju faktiskt utmärkt att skapa minnesluckor i skräphanterande språk, om man klamrar sig fast vid saker man inte längre behöver :) I Java kan man hitta sådant genom att kräva en "verbose garbage collection"; jag skulle gissa att Perl har något liknande.
293 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849