Ik heb een programma geschreven dat persberichten kan downloaden van websites. Dit wordt gedaan gebaseerd op een bepaald patroon in de url/bestandsnaam.
Gesimplificeerd heb ik 3 objecten gemaakt:
- een PressRelease object (PR)
afgeleide van een download object en kan een Persbericht downloaden, de html netjes formateren en opslaan
- een LinkPagina object (LP)
afgeleide van een download object en kan pagina's binnen halen waar links in zitten. De links worden doorgespeeld aan een LinkInterpreter
- een LinkInterpreter object (LI)
in staat links te evalueren om de beslissing te nemen een Persbericht object te maken voor download of een linkPagina voor links te rippen...
Dit werkt allemaal prima, LinkPagina maakt netjes een LinkInterpreter aan, welke dan weer PR of LP objecten maakt tot op een ingestelde scandiepte.
En ik krijg ook alles binnen wat ik hebben wil.
Echter na verloop van tijd tijdens het binnenhalen van de pagina's loopt het geheugengebruik steeds verder op, en soms zelfs met steeds grotere stappen en ik heb geen idee waarom...
Na het meelopen door de code zie ik dat iedere Free + nil opdracht netjes wordt uitgevoerd en op ieder punt in m'n programma er slechts één "tak" in het geheugen zou moeten zitten (dus 1 pad naar de plaats waar je dan bent, voorgaande pagina's die geheel gescanned zijn zijn ge-free-d)
Toch blijft ie geheugen vasthouden totdat hij klaar is met het binnenhalen van de persberichten. Zodra dat gebeurd is is het geheugenverbruik weer ongeveer bij het startpunt.
Nou heb ik rondgevraagd en iemand zei me dat het mogelijk is dat windows eventueel te kleine stukken geheugen niet meteen vrij geeft, maar dat is toch eigenlijk niet echt van toepassing hier? op een gegeven moment heb ik bijvoorbeeld een pagina 3 branches diep, waarvoor je geschat 1MB geheugen zou nodig hebben, waar het programma 150MB geheugen gebruikt. Als het programma gestart is gebruikt het pas 3MB
Iemand hier met een suggestie wat ik nog kan doen?
Gesimplificeerd heb ik 3 objecten gemaakt:
- een PressRelease object (PR)
afgeleide van een download object en kan een Persbericht downloaden, de html netjes formateren en opslaan
- een LinkPagina object (LP)
afgeleide van een download object en kan pagina's binnen halen waar links in zitten. De links worden doorgespeeld aan een LinkInterpreter
- een LinkInterpreter object (LI)
in staat links te evalueren om de beslissing te nemen een Persbericht object te maken voor download of een linkPagina voor links te rippen...
Dit werkt allemaal prima, LinkPagina maakt netjes een LinkInterpreter aan, welke dan weer PR of LP objecten maakt tot op een ingestelde scandiepte.
En ik krijg ook alles binnen wat ik hebben wil.
Echter na verloop van tijd tijdens het binnenhalen van de pagina's loopt het geheugengebruik steeds verder op, en soms zelfs met steeds grotere stappen en ik heb geen idee waarom...
Na het meelopen door de code zie ik dat iedere Free + nil opdracht netjes wordt uitgevoerd en op ieder punt in m'n programma er slechts één "tak" in het geheugen zou moeten zitten (dus 1 pad naar de plaats waar je dan bent, voorgaande pagina's die geheel gescanned zijn zijn ge-free-d)
Toch blijft ie geheugen vasthouden totdat hij klaar is met het binnenhalen van de persberichten. Zodra dat gebeurd is is het geheugenverbruik weer ongeveer bij het startpunt.
Nou heb ik rondgevraagd en iemand zei me dat het mogelijk is dat windows eventueel te kleine stukken geheugen niet meteen vrij geeft, maar dat is toch eigenlijk niet echt van toepassing hier? op een gegeven moment heb ik bijvoorbeeld een pagina 3 branches diep, waarvoor je geschat 1MB geheugen zou nodig hebben, waar het programma 150MB geheugen gebruikt. Als het programma gestart is gebruikt het pas 3MB
Iemand hier met een suggestie wat ik nog kan doen?