##// END OF EJS Templates
share: make it possible to control the working copy format variant...
share: make it possible to control the working copy format variant A share will use the same format as its source for the store, but there are no reason to not lets it control the working copy variant at creation time. So we make it so. Differential Revision: https://phab.mercurial-scm.org/D11892

File last commit:

r46393:5b6c0af0 default
r49297:bf2738e0 default
Show More
memorytop.py
44 lines | 1.4 KiB | text/x-python | PythonLexer
# memorytop requires Python 3.4
#
# Usage: set PYTHONTRACEMALLOC=n in the environment of the hg invocation,
# where n>= is the number of frames to show in the backtrace. Put calls to
# memorytop in strategic places to show the current memory use by allocation
# site.
import gc
import tracemalloc
def memorytop(limit=10):
gc.collect()
snapshot = tracemalloc.take_snapshot()
snapshot = snapshot.filter_traces(
(
tracemalloc.Filter(False, "<frozen importlib._bootstrap>"),
tracemalloc.Filter(False, "<frozen importlib._bootstrap_external>"),
tracemalloc.Filter(False, "<unknown>"),
)
)
stats = snapshot.statistics('traceback')
total = sum(stat.size for stat in stats)
print("\nTotal allocated size: %.1f KiB\n" % (total / 1024))
print("Lines with the biggest net allocations")
for index, stat in enumerate(stats[:limit], 1):
print(
"#%d: %d objects using %.1f KiB"
% (index, stat.count, stat.size / 1024)
)
for line in stat.traceback.format(most_recent_first=True):
print(' ', line)
other = stats[limit:]
if other:
size = sum(stat.size for stat in other)
count = sum(stat.count for stat in other)
print(
"%s other: %d objects using %.1f KiB"
% (len(other), count, size / 1024)
)
print()