memleak.py 903 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. # -*- Mode: Python; tab-width: 4 -*-
  2. import sys,types,time
  3. def get_refcounts():
  4. d = {}
  5. sys.modules
  6. # collect all classes
  7. for m in sys.modules.values():
  8. for sym in dir(m):
  9. o = getattr (m, sym)
  10. if type(o) is types.ClassType:
  11. d[o] = sys.getrefcount (o)
  12. # sort by refcount
  13. pairs = map (lambda x: (x[1],x[0]), d.items())
  14. pairs.sort()
  15. pairs.reverse()
  16. return pairs
  17. def print_top(max):
  18. for n, c in get_refcounts()[:max]:
  19. print '%10d %s' % (n, c.__name__)
  20. import ldap
  21. l = ldap.initialize('ldap://localhost:1390/')
  22. i = 100000
  23. while i:
  24. i -= 1
  25. res = l.search_ext_s("",ldap.SCOPE_BASE,"(objectClass=*)",timeout=40,sizelimit=10000)
  26. # if i % 100==0:
  27. # print_top(50)
  28. # print '---------------'
  29. # time.sleep(0.1)
  30. # l.unbind()
  31. # del l
  32. # l = ldap.initialize('ldap://localhost:1390/')
  33. l.unbind()