New
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_SIZEenvironment variable knob was replaced withMEMORY_PROFILER_BACKTRACE_CACHE_SIZE_LEVEL_1andMEMORY_PROFILER_BACKTRACE_CACHE_SIZE_LEVEL_2to control the size of the per-thread caches and the global cache respectively - The
MEMORY_PROFILER_PRECISE_TIMESTAMPSenvironment variable knob was removed (always gathering precise timestamps is fast enough on amd64) - The default value of
MEMORY_PROFILER_TEMPORARY_ALLOCATION_PENDING_THRESHOLDis 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_usageGraph::show_live_allocationsGraph::show_new_allocationsGraph::show_deallocationsAllocationList::only_group_max_total_usage_first_seen_at_leastAllocationList::only_jemalloc
- New subcommand:
extract(will unpack all of the files embedded into a given data file) - The
stripsubcommand will now not buffer allocations indefinitely when using the--thresholdoption, which results in a significantly lower memory usage when stripping huge data files from long profiling runs malloc_usable_sizenow works properly when compiled with thejemallocfeaturereallocarraydoesn't segfault anymore- The compilation should now work on distributions with an ancient version of Yarn