diff options
author | Maximilian Hils <git@maximilianhils.com> | 2016-02-15 14:58:46 +0100 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2016-02-15 14:58:46 +0100 |
commit | 33fa49277a821b9d38e8c9bf0bcf2adcfa2f6f04 (patch) | |
tree | 31914a601302579ff817504019296fd7e9e46765 /mitmproxy/test/tools/memoryleak.py | |
parent | 36f34f701991b5d474c005ec45e3b66e20f326a8 (diff) | |
download | mitmproxy-33fa49277a821b9d38e8c9bf0bcf2adcfa2f6f04.tar.gz mitmproxy-33fa49277a821b9d38e8c9bf0bcf2adcfa2f6f04.tar.bz2 mitmproxy-33fa49277a821b9d38e8c9bf0bcf2adcfa2f6f04.zip |
move mitmproxy
Diffstat (limited to 'mitmproxy/test/tools/memoryleak.py')
-rw-r--r-- | mitmproxy/test/tools/memoryleak.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/mitmproxy/test/tools/memoryleak.py b/mitmproxy/test/tools/memoryleak.py new file mode 100644 index 00000000..259309a6 --- /dev/null +++ b/mitmproxy/test/tools/memoryleak.py @@ -0,0 +1,38 @@ +import gc +import threading +from pympler import muppy, refbrowser +from OpenSSL import SSL +# import os +#os.environ["TK_LIBRARY"] = r"C:\Python27\tcl\tcl8.5" +#os.environ["TCL_LIBRARY"] = r"C:\Python27\tcl\tcl8.5" + +# Also noteworthy: guppy, objgraph + +step = 0 +__memory_locals__ = True + + +def str_fun(obj): + if isinstance(obj, dict): + if "__memory_locals__" in obj: + return "(-locals-)" + if "self" in obj and isinstance(obj["self"], refbrowser.InteractiveBrowser): + return "(-browser-)" + return str(id(obj)) + ": " + str(obj)[:100].replace("\r\n", "\\r\\n").replace("\n", "\\n") + + +def request(ctx, flow): + global step, ssl + print("==========") + print("GC: {}".format(gc.collect())) + print("Threads: {}".format(threading.active_count())) + + step += 1 + if step == 1: + all_objects = muppy.get_objects() + ssl = muppy.filter(all_objects, SSL.Connection)[0] + if step == 2: + ib = refbrowser.InteractiveBrowser(ssl, 2, str_fun, repeat=False) + del ssl # do this to unpollute view + ib.main(True) + # print("\r\n".join(str(x)[:100] for x in gc.get_referrers(ssl))) |