[Twisted-web] memory leak with metaclass
tazzo
tazzo at email.it
Mon Jun 27 01:56:35 MDT 2005
Also without metaclass there is a memory leak, returning
instances of rend.Page from locateChild they are never released.
Here a simple example, the function 'do' build on file log
a simple statistic every 5 sec about only instances classes that are
growing up during page serving.
Try to start the server and ask some page continuosly, you'll see
the number of rendPage grow up with some other classes.
#-------------------------
import nevow
instances={}
count=0
def do():
global count
import gc
gc.collect()
objects=gc.get_objects()
new={}
for object in objects:
try:
new[str(object.__class__)]=new.setdefault(str(object.__class__),0)+1
except:
pass
show=set()
for key,value in new.items():
if key in instances:
if instances[key][-1]!=value:
show.add(key)
else:
instances[key]=[0]*count
show.add(key)
instances[key].append(new[key])
log=open('log','w')
for klass,lista in sorted(instances.items()):
if klass in show:
print >>log,klass
print >>log,'\t',lista
log.close()
count+=1
import twisted
from twisted.internet.task import LoopingCall
from nevow import appserver
LoopingCall(do).start(5)
class Controller(nevow.rend.Page):
def locateChild(self,context,segments):
page=nevow.rend.Page()
page.docFactory=nevow.loaders.stan(nevow.tags.h1['I leak memory'])
return page,[]
application=twisted.application.service.Application('leaker')
webservice =
twisted.application.internet.TCPServer(12345,appserver.NevowSite(Controller()))
webservice.setServiceParent(application)
#-------------------------
--
La presente comunicazione potrebbe contenere informazioni riservate e/o
protette
da segreto professionale ed e' indirizzata esclusivamente ai destinatari della
medesima qui indicati. Se avete ricevuto per errore la presente comunicazione,
siete invitati a segnalarcelo, rispondendo a questo stesso indirizzo di
e-mail,
e a cancellare il presente messaggio dal Vostro sistema. E' strettamente
proibito
e potrebbe essere fonte di violazione di legge qualsiasi uso, comunicazione,
copia
o diffusione dei contenuti di questa comunicazione da parte di chi la abbia
ricevuta per errore o in violazione degli scopi della presente.
Il messaggio e' stato analizzato alla ricerca di virus o contenuti pericolosi
ed
e' risultato NON infetto.
More information about the Twisted-web
mailing list