Innanzitutto buongiorno a tutti, in quanto di solito bazzico nel forum di php, mentre qui è la prima volta che posto.
Avrei una domanda da porvi su un argomento che ho visto trattare più volte ma che mi lascia ancora alcuni dubbi: la garbage collection.

Ho fatto una specie di spider personalizzato per andare a leggere via http le pagine di alcuni siti dell'azienda in cui lavoro in maniera da estrarre alcuni dati mirati. Il problema è che dopo aver letto oltre 10000 pagine l'heap si esaurisce.

Ora poichè non posso scendere nei particolari del codice vorrei capire almeno teoricamente se l'esaurimento dell'heap è per forza causato da un errore tipo un ciclo infinito o una ricorsione senza controllo, oppure se in alcuni casi il garbage collector non fa in tempo a liberare memoria poichè vengono creati molti oggetti in un lasso di tempo breve.

La mia domanda nasce dal fatto che mi sembra di non abusare di risorse, in quanto riciclo tutte le variabili, inserendo al loro interno nuovi riferimenti ad oggetti e quindi i vecchi dovrebbero poter essere spazzati via dal collector, e soprattutto dal fatto che se questo non accadesse mi sembra strano che la memoria non si esaurisca prima di aver letto 10000 o 11000 pagine.

Se qualcuno avesse suggerimenti, link o teorie valide, sarebbe quantomeno un discorso interessante, anche se non risolve il mio problema specifico.

Grazie a tutti.