0.8.0
Major changes:
- Significantly lower CPU usage when temporary allocation culling is turned on
- Each thread has now its own first-level backtrace cache; this might result in higher memory usage when profiling
- The
MEMORY_PROFILER_BACKTRACE_CACHE_SIZE
environment variable knob was replaced withMEMORY_PROFILER_BACKTRACE_CACHE_SIZE_LEVEL_1
andMEMORY_PROFILER_BACKTRACE_CACHE_SIZE_LEVEL_2
to control the size of the per-thread caches and the global cache respectively - The
MEMORY_PROFILER_PRECISE_TIMESTAMPS
environment variable knob was removed (always gathering precise timestamps is fast enough on amd64) - The default value of
MEMORY_PROFILER_TEMPORARY_ALLOCATION_PENDING_THRESHOLD
is now unset, which means that the allocations will be buffered indefinitely until they're either culled or until they'll live long enough to not be eligible for culling (might increase memory usage in certain cases) - Backtraces are now not emitted for allocations which were completely culled
- You can now see whether a given allocation was made through jemalloc, and filter according to that
- You can now see when a given allocation group reached its maximum memory usage was, and filter according to that
- New scripting APIs:
Graph::show_memory_usage
Graph::show_live_allocations
Graph::show_new_allocations
Graph::show_deallocations
AllocationList::only_group_max_total_usage_first_seen_at_least
AllocationList::only_jemalloc
- New subcommand:
extract
(will unpack all of the files embedded into a given data file) - The
strip
subcommand will now not buffer allocations indefinitely when using the--threshold
option, which results in a significantly lower memory usage when stripping huge data files from long profiling runs malloc_usable_size
now works properly when compiled with thejemalloc
featurereallocarray
doesn't segfault anymore- The compilation should now work on distributions with an ancient version of Yarn