[Python] Rilascio memoria

Marco Giusti marco.giusti a posteo.de
Gio 27 Nov 2014 18:54:36 CET


On Thu, Nov 27 2014, Matteo Boscolo wrote:
> Ciao a tutti ..
> 
> Ho un problemino con il rilascio della memoria di una oggetto
> abbastanza corposo che referenzio all'interno di un dizionario in
> questo modo
> 
> class myObject(object):
>     pass
> 
> myDict={"a":myObject()}
> 
> per deferenziarlo utilizzo:
> 
> del(myDict['a'])
> 
> diciamo che il mio applicativo riesce ad accumulare circa 4 giga di
> memoria in 4 ore di lavoro.. andando a cancellare e referenziare piu
> volte oggetti all'interno di quel dizionario myDict
> che naturalmente non scaricano la memoria ma sale sempre..
> 
> 
> pensavo di usare dei thread per ogni oggetto in modo che una volta
> che ho finito di utlilizzarlo il thread muore e la memoria mi si
> scarica.. ma non ho ancora fatto delle prove in meriro
> avete qualche idea o suggerimento in merito ??

Sì, non usare i thread. Se l'oggetto rimane in memoria vuol dire che c'è
un altro riferimento allo stesso e i thread non ti aiutano ad eliminarlo.
Forse ti obbligano a rivedere l'applicativo e indirettamente a risolvere
il problema, ma fai un favore a te stesso e non usare i thread.

Io ho usato objgraph per risolvere un problema simile. E' molto
semplice da usare ma richiede un po' di tempo per elaborare i risultati.

m.


Maggiori informazioni sulla lista Python