For memory profilers, the strongest matches are bloomberg/memray (Memray is a comprehensive memory profiler for Python that), microsoft/perfview (PerfView is a comprehensive performance and memory profiling tool) and kde/heaptrack (Heaptrack is a comprehensive memory profiler for Linux that). clinicjs/node-clinic and bytedance/memory-leak-detector round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
Find the best memory profilers for your language. Compare top-rated open-source tools by activity and features to find the best fit for your project.
Memray is a memory profiler for Python that tracks heap allocations in both Python code and native C or C++ extensions. It captures memory events by hooking into the language runtime and traversing call stacks, providing a comprehensive view of how an application consumes memory. The tool is designed to minimize performance impact on the target application by using thread-local buffering and streaming data to an external process or file. The project distinguishes itself through its ability to monitor complex, multi-threaded systems and child processes in real-time. It provides diagnostic util
Memray is a comprehensive memory profiler for Python that provides heap analysis, leak detection, and call graph visualization while supporting native C/C++ extensions and real-time monitoring.
PerfView is a set of integrated profiling and tracing tools built on Windows Event Tracing for Windows (ETW), designed to diagnose CPU, memory, and ETW-based performance issues in .NET applications. It captures ETW events to analyze runtime behavior, CPU usage, and memory allocations, serving as a .NET performance profiler that measures both CPU time and garbage collection events. The tool distinguishes itself with a diff comparison engine that compares two performance traces side-by-side to highlight changes in method costs and event rates. It renders profiled call stacks as flame graphs whe
PerfView is a comprehensive performance and memory profiling tool for .NET applications that provides heap analysis, leak detection, and call graph visualization through ETW-based tracing.
Heaptrack is a heap memory profiler and diagnostic tool for applications running on Linux. It functions as a memory leak detector and performance analysis system that records heap allocations and stack traces to identify memory hotspots and consumption patterns. The project provides a graphical heap allocation visualizer for exploring memory usage through tree views and peak memory reports. It utilizes flame graphs and allocation charts to visualize memory hotspots and assist in the detection of leaks. The toolset includes capabilities for heap memory allocation tracing and the generation of
Heaptrack is a comprehensive memory profiler for Linux that provides heap analysis, leak detection, and detailed call graph visualization through flame graphs and allocation charts.
Node-clinic is a performance profiling suite for Node.js designed to diagnose CPU bottlenecks, memory leaks, and asynchronous event loop issues. It provides specialized diagnostic tools for visualizing asynchronous flows, generating CPU flame graphs, and analyzing heap memory allocation. The suite includes a CPU flame graph tool to identify functions consuming the most processing time, a heap memory analyzer to track object allocation and leaks, and an asynchronous I/O profiler to map operation flows and find event loop bottlenecks. These tools cover broader capabilities in CPU execution pro
Node-clinic is a comprehensive performance profiling suite for Node.js that provides heap analysis, leak detection, and visualization tools specifically designed to identify memory and performance bottlenecks.
This project is a diagnostic tool and memory profiler designed to identify and track memory allocation patterns within native code layers. It functions as a native code debugging utility that monitors heap usage and resource lifecycle management to assist in the resolution of memory leaks and resource exhaustion issues. The tool utilizes hook-based allocation interception to maintain a real-time map of active memory blocks and employs shadow-stack call tracing to associate these blocks with specific code locations. By performing periodic reachability analysis and differential memory snapshott
This tool is a native memory profiler that provides heap analysis, leak detection, and call stack tracing, making it a direct fit for identifying memory issues in C and C++ applications.
gperftools is a collection of specialized tools for profiling CPU usage, detecting memory errors, and providing high-performance memory allocation. It provides a memory profiling toolkit for C++ applications, including a sampling CPU profiler and a heap profiler for analyzing consumption patterns. The project includes a high-performance memory allocator designed as a multi-threaded replacement for standard allocation to reduce contention and improve execution speed. It further provides a memory debugger to identify illegal memory access and double frees. The toolkit covers broad diagnostic c
This toolkit provides essential heap profiling and memory leak detection for C++ applications, serving as a specialized diagnostic tool for identifying memory-related performance bottlenecks.
Orbit is a set of specialized tools for C and C++ performance profiling, binary symbol mapping, and remote process and thread analysis. It provides a system for analyzing execution time and resource usage, utilizing a call graph visualizer to map function entries and exits into hierarchical execution flows for individual threads. The project distinguishes itself with a remote process profiler capable of capturing performance data from applications running on remote hosts. It also includes a thread scheduling analyzer that tracks context switches and processor core utilization to visualize thr
Orbit is a specialized performance profiler for C and C++ that provides call graph visualization and thread analysis, making it a capable tool for identifying bottlenecks even though its primary focus is on execution time and scheduling rather than heap-specific memory leak detection.
Memlab is an automated browser memory profiler and JavaScript memory leak analyzer. It provides a toolkit for detecting and analyzing memory leaks by inspecting and comparing heap snapshots to identify unbound object growth and detached DOM elements. The system distinguishes itself through an automated leak testing framework that executes end-to-end browser interaction sequences to programmatically isolate memory regressions. It utilizes heap snapshot diffing, retainer chain tracing, and heuristic-based filtering to determine why objects remain in memory and to map the shortest path from garb
Memlab is a specialized memory profiler for JavaScript that provides heap analysis, automated leak detection, and retainer chain visualization, making it a comprehensive tool for identifying memory bottlenecks in web applications.
Memory Profiler is a diagnostic library for Ruby applications designed to monitor runtime memory consumption and object lifecycles. It provides tools to track object allocations and memory usage, enabling the identification of performance bottlenecks and potential memory leaks that affect software stability. The tool functions by observing memory behavior during program execution, allowing developers to distinguish between short-lived data and objects that persist beyond their intended lifecycle. It captures the execution context of allocations by walking the call stack, which helps attribute
This is a specialized memory profiler for Ruby applications that provides heap analysis, leak detection, and call stack attribution to help developers identify and optimize memory consumption.
Fuite is a web application memory leak detector and browser heap snapshot analyzer. It functions as an automated interaction tester that monitors heap growth during repeated browser sequences to identify leaking DOM nodes and collections. The tool differentiates itself by executing scripted interaction loops to amplify memory growth, making leaks easier to detect. It captures and compares heap snapshots across different timestamps and exports detailed reports containing stack traces and the specific code locations where listeners were declared. The project covers browser automation and orche
Fuite is a specialized memory profiler for web applications that automates heap snapshot analysis and interaction testing to pinpoint memory leaks in browser environments.
vprof is a visual profiling tool for Python designed to identify execution bottlenecks and monitor memory consumption. It functions as a CPU and memory profiler that transforms performance data into interactive visualizations to analyze processor time and call stacks. The project distinguishes itself through a suite of visual diagnostics, including flame graphs for stack visualization and heatmaps that map execution frequency and duration directly onto source code. It also includes a remote performance monitor capable of capturing function-specific metrics from a running server and streaming
vprof is a visual profiler for Python that provides memory consumption tracking and call stack visualization, making it a direct tool for identifying performance bottlenecks and resource usage in Python applications.
MLeaksFinder is a diagnostic framework and profiling utility designed for the automatic detection of memory leaks and unfreed objects in iOS applications. It functions as a memory leak detector and profiling tool that identifies retain cycles and analyzes object lifecycles for both Swift and Objective-C code. The tool identifies circular dependencies by tracing reference chains and traversing object graphs, starting from a root view controller. It provides precise debugging data by capturing the allocation stacks of leaked objects to trace the origin of the memory leak. The framework include
MLeaksFinder is a specialized memory profiler for iOS that provides automated leak detection and object lifecycle analysis, making it a highly effective tool for identifying retain cycles and memory issues in Swift and Objective-C applications.
Scalene is a high-performance diagnostic utility designed to measure resource consumption during the execution of Python applications. It functions as a line-level monitor, providing granular insights that pinpoint the specific source code responsible for performance overhead. The tool distinguishes itself through statistical profiling that captures stack traces and resource usage without requiring manual instrumentation of the source code. It tracks CPU, GPU, and memory consumption by intercepting library-level calls and hardware driver commands, allowing for the analysis of both managed and
Scalene is a high-performance memory and resource profiler for Python that provides line-level insights and leak detection, making it a specialized but effective tool for identifying performance bottlenecks.
LeakCanary is a diagnostic tool designed to identify memory leaks by monitoring object lifecycles and analyzing heap snapshots. It automatically detects objects that fail to be garbage collected after their expected lifespan, providing developers with actionable insights to prevent performance degradation and application crashes. The project distinguishes itself by offloading memory-intensive heap parsing to a separate background process, which minimizes performance impact on the main application during runtime. It includes sophisticated deobfuscation capabilities that map obfuscated stack tr
LeakCanary is a specialized memory profiler for Android applications that automates heap analysis and leak detection, providing developers with clear call traces to identify objects failing to be garbage collected.
stats.js is a JavaScript performance monitor and visual diagnostic tool. It provides a real-time overlay for tracking frame rates, memory allocation, and the rendering efficiency of web graphics and applications. The project includes a visual meter for measuring frames per second and a browser memory profiler that displays allocated memory in megabytes to help detect resource leaks. It is designed as a web graphics debugger to monitor the efficiency of WebGL and Canvas rendering. The tool covers a range of monitoring and observability capabilities, including the creation of custom performanc
This tool provides real-time memory usage monitoring and heap tracking directly in the browser, serving as a lightweight profiler for identifying resource leaks in web applications.
pyinstrument is a statistical sampling profiler for Python that records the call stack at regular intervals to identify performance bottlenecks with low overhead. It tracks wall-clock time, including I/O and external service calls, and provides specialized profiling for asynchronous programs by attributing time spent awaiting tasks to the calling function. The project converts captured execution data into interactive HTML reports, JSON, and flamecharts. It includes a call stack visualizer to simplify the analysis of execution paths and supports the profiling of individual cells within interac
This is a statistical sampling profiler for Python that provides call graph visualization and performance bottleneck identification, though it focuses on execution time rather than heap analysis or memory leak detection.
This project is a diagnostic utility for monitoring and analyzing memory consumption in Python applications. It provides tools for tracking resource usage at the process level and performing detailed, line-by-line analysis to identify memory leaks and performance bottlenecks. The tool distinguishes itself through its ability to aggregate memory metrics across entire process trees, capturing the total resource impact of both parent and child processes. It supports time-series visualization of memory usage over the duration of a script, allowing for the identification of long-term consumption p
This tool provides line-by-line memory analysis and leak detection specifically for Python applications, making it a focused and effective memory profiler for that ecosystem.
GCViewer is a JVM garbage collection visualizer and memory analysis tool. It functions as a log parser and metrics exporter that transforms verbose JVM garbage collection logs into structured data, visual charts, and summary reports. The project enables the visualization of heap size, generation usage, and collection timing through multi-line charts. It specifically tracks stop-the-world pause durations, concurrent collection cycles, and memory footprint to assist in detecting memory leaks and tuning heap sizes. The tool covers log processing capabilities such as timestamp alignment and the
GCViewer is a specialized memory analysis tool that parses JVM garbage collection logs to visualize heap usage and identify memory leaks, serving as a focused utility for memory performance tuning.
py-spy is a sampling profiler and process debugger for Python. It allows for the analysis of running processes to identify performance bottlenecks and diagnose hanging programs without requiring code changes or restarts. The tool operates by reading the memory of a running process from the outside, which enables non-invasive sampling and state collection without pausing execution. It can resolve binary symbols to capture performance data from native extensions written in compiled languages and generate visual flame graphs for both native extensions and subprocesses. The project provides capa
This is a sampling profiler for Python that identifies performance bottlenecks and visualizes execution via flame graphs, though it focuses on CPU profiling rather than heap analysis or memory leak detection.
FBRetainCycleDetector is a runtime memory profiling tool and analyzer for iOS applications. It identifies circular references and retain cycles within the Objective-C object graph to prevent memory leaks. The tool analyzes the live memory heap and inspects runtime metadata to discover object relationships. It identifies closed-loop reference chains, including those involving associated objects and timers, and uses custom logic to filter out known safe cycles from reports. The project covers memory management capabilities including allocation tracking by class name, runtime object graph analy
This tool is a specialized memory profiler for iOS that focuses on identifying retain cycles and heap object relationships, making it a highly effective, albeit platform-specific, solution for memory leak detection.
pprof is a tool for visualizing and analyzing performance profiling data. It converts sampled call stacks into a directed graph rendered as an SVG, enabling visual identification of execution hotspots. The tool also parses Linux perf.data files, converting them into an internal profile representation for further analysis. Beyond visualization, pprof provides a command-line REPL for interactive exploration of profiling data, allowing users to filter, refine, and query performance information on the fly. It generates sorted text reports that highlight the most resource-intensive call stacks, an
This tool provides robust heap analysis, call graph visualization, and performance profiling capabilities, making it a standard choice for identifying memory and CPU bottlenecks in applications.
honest-profiler
This is a JVM-specific sampling profiler that provides the necessary heap and call stack analysis to identify performance bottlenecks and memory usage patterns in Java applications.
Uber JVM Profiler provides a Java Agent to collect various metrics and stacktraces for Hadoop/Spark JVM processes in a distributed way, for example, CPU/Memory/IO metrics.
This Java agent provides the necessary heap and memory metric collection for JVM-based applications, serving as a specialized profiler for distributed environments like Hadoop and Spark.
vjtools is a comprehensive Java development toolset and runtime monitor designed for optimizing application performance and ensuring codebase consistency. It provides a suite of JVM diagnostics tools, a performance profiler, and a static analysis system for enforcing coding standards. The project distinguishes itself through specialized runtime observability, including the ability to attach to processes via process ID and inject dynamic probes to monitor method calls without restarting the system. It features container-aware resource detection that reads control group files to report actual C
This toolset provides specialized JVM diagnostics and memory analysis capabilities, including heap and thread inspection, making it a functional memory profiler for Java-based applications.
Async-profiler is a suite of performance tools designed for sampling Java runtimes, tracking memory allocations, and monitoring hardware counters. It functions as a low-overhead sampling profiler for Java applications, collecting stack traces and memory allocation data without safepoint bias. The project provides specialized utilities for generating interactive flame graphs to visualize execution hotspots in a web browser. It includes a hardware performance counter monitor to track low-level system events such as cache misses and page faults. The toolset covers several diagnostic domains, in
This is a specialized sampling profiler for Java applications that provides heap allocation tracking and flame graph visualization, making it a highly effective tool for identifying memory bottlenecks and performance issues in JVM environments.
Arthas is a Java diagnostic tool and runtime debugger designed for real-time troubleshooting of applications. It functions as a remote diagnostics agent that allows users to inspect the runtime state of a Java process, including its heap objects and classloader hierarchies, without requiring a process restart. The project distinguishes itself through advanced bytecode manipulation capabilities, enabling live class hotswapping and the modification of bytecode in running processes. It supports in-memory source compilation and runtime bytecode decompilation to verify and update logic instantly w
Arthas is a powerful Java diagnostic tool that provides real-time heap inspection, method performance metrics, and execution tracing, making it a highly effective utility for identifying memory bottlenecks and leaks in running JVM applications.
This project is a suite of runtime diagnostic tools designed to detect memory leaks, concurrency races, and language-specification violations during software execution. It provides a collection of dynamic analysis tools that identify addressability issues, uninitialized memory usage, and memory safety bugs in applications. The toolset includes a thread safety analyzer to identify data races and deadlocks in concurrent code, as well as an undefined behavior sanitizer to detect operations that violate language specifications. The system covers broad capabilities in memory safety monitoring and
This suite of runtime diagnostic tools provides robust memory leak detection and memory safety analysis through instrumentation, serving as a core component for identifying memory-related bottlenecks and bugs in C/C++ applications.
Async-profiler is a sampling profiler for Java applications that tracks CPU time and stack traces across execution frames to identify performance bottlenecks. It is designed to capture profiling data without introducing timing bias. The project provides capabilities for JVM memory analysis to locate native and heap allocation hotspots and memory leaks. It also includes system contention analysis to identify resource bottlenecks through the tracking of contended locks and hardware performance counters. The tool converts raw profiling data into visual performance reports, including interactive
This is a specialized sampling profiler for Java applications that provides heap allocation tracking and memory leak detection, making it a highly effective tool for identifying memory-related performance bottlenecks in JVM environments.
Perfetto is a platform for system-level performance tracing and analysis on Linux and Android. It combines a high-throughput trace recorder, a SQL-based query engine, and a browser-based visualizer into a single toolchain. The platform covers CPU scheduling and call-stack profiling, native and Java heap memory allocation tracking, GPU and graphics events, and system-wide counters such as CPU frequency and power consumption. The architecture decouples trace recording from offline analysis, using a compact protobuf format for event encoding and columnar storage for efficient SQL queries. The we
Perfetto is a comprehensive system-level tracing platform that includes native and Java heap memory allocation tracking, making it a powerful tool for identifying memory bottlenecks and leaks despite its broader focus on system-wide performance.
Easy Profiler is a performance profiling library for C++ applications designed to measure execution duration and identify bottlenecks. It provides a framework for instrumenting code blocks to track performance metrics, allowing for the analysis of thread activity and system behavior through detailed timeline visualization. The library distinguishes itself by utilizing scope-based instrumentation to automatically track code lifecycles, minimizing manual overhead. It employs thread-local buffering and asynchronous data flushing to reduce synchronization contention, ensuring that performance dat
This is a lightweight C++ profiling library that provides the core capabilities of performance tracking and call graph visualization, though it is a library you integrate into your code rather than a standalone analysis application.
This project is a performance analysis suite for Python applications, providing tools for both application-wide profiling and granular code benchmarking. It enables developers to identify execution bottlenecks and measure function call frequency through a combination of deterministic tracing and statistical sampling methods. The tool distinguishes itself by offering a terminal-based interactive interface that allows for real-time navigation and filtering of complex call stacks. It supports non-intrusive data collection through signal-based process interception, enabling performance monitoring
This tool provides real-time, statistical profiling for Python applications, allowing you to identify performance bottlenecks and analyze execution patterns directly within your runtime.
The OpenTelemetry eBPF profiler is a system-wide performance monitoring agent that captures stack traces and resource usage across kernel and user-space runtimes. By utilizing kernel-level tracing, it provides continuous observability into application behavior without requiring manual code instrumentation or process restarts. The tool distinguishes itself through its ability to perform mixed-language stack unwinding, which reconstructs call chains across native code and managed virtual machines. It handles environments lacking frame pointers or debug symbols by parsing binary metadata and exc
This tool uses eBPF to provide production-scale profiling across a wide range of languages, offering the deep visibility into runtime performance and resource usage required to identify bottlenecks.
This is a small tool designed to allow you understand the per-request memory usage of your njs script in a non-production environment.
This tool provides per-request memory analysis for njs scripts, serving as a specialized memory profiler for that specific runtime environment.
A sampling JVM profiler without the safepoint sample bias
This is a sampling profiler for the JVM that provides performance analysis and call graph visualization, making it a specialized tool for identifying bottlenecks in Java applications.
| المستودع | النجوم | اللغة | الترخيص | آخر تحديث |
|---|---|---|---|---|
| bloomberg/memray | 14.9K | Python | apache-2.0 | |
| microsoft/perfview | 4.6K | C# | mit | |
| kde/heaptrack | 4.1K | C++ | — | |
| clinicjs/node-clinic | 5.9K | JavaScript | MIT | |
| bytedance/memory-leak-detector | 1.2K | C | NOASSERTION | |
| gperftools/gperftools | 9K | C++ | BSD-3-Clause | |
| google/orbit | 4.3K | C++ | BSD-2-Clause | |
| facebook/memlab | 5K | TypeScript | MIT | |
| samsaffron/memory_profiler | 1.8K | Ruby | MIT | |
| nolanlawson/fuite | 4.6K | JavaScript | Apache-2.0 |