For memory management subsystems, the first results are microsoft/mimalloc (Mimalloc is a high-performance, general-purpose dynamic memory allocator that serves as a core component for managing system heap memory, though it focuses on allocation and security rather than providing garbage collection or NUMA-specific scheduling), bdwgc/bdwgc (This is a comprehensive garbage-collected memory allocator for C and C++ that provides dynamic allocation, automatic reclamation, and low-latency features like incremental and parallel collection, making it a direct fit for a memory management subsystem) and orangeduck/cello (Cello provides a high-level runtime environment for C that includes an integrated garbage collection system and automated memory lifecycle management, fitting the requirements for a memory management subsystem within a C-based runtime). jemalloc/jemalloc and facebook/folly round out the shortlist. Compare the match explanations and check the project documentation against your requirements.
Explore the best open-source memory management systems. Compare top-rated libraries by performance and activity to find the best fit for your project.
Mimalloc is a general purpose dynamic memory allocator for C and C++ designed to increase execution speed and reduce fragmentation. It functions as a scalable heap manager that replaces standard library allocation functions to improve performance and memory efficiency across applications. The project distinguishes itself as both a heap security hardener and a memory corruption detector. It employs randomized allocation, encrypted free lists, and sampled guard pages to mitigate heap exploits and identify buffer overflows or use-after-free errors during runtime. The allocator provides capabili
Mimalloc is a high-performance, general-purpose dynamic memory allocator that serves as a core component for managing system heap memory, though it focuses on allocation and security rather than providing garbage collection or NUMA-specific scheduling.
This project is a garbage collection library and memory allocator for C and C++ that provides automatic reclamation of unreachable objects. It functions as a memory management system that can replace standard allocation functions to automate memory reclamation without requiring source modification. The system is distinguished by its ability to perform incremental and generational garbage collection to reduce application pauses, as well as parallel collection to distribute tracing across multiple CPU cores. It includes a specialized string manipulation library that uses shared structures to en
This is a comprehensive garbage-collected memory allocator for C and C++ that provides dynamic allocation, automatic reclamation, and low-latency features like incremental and parallel collection, making it a direct fit for a memory management subsystem.
Cello is a programming language extension for C that provides a higher-level implementation of the language. It integrates an object-oriented framework, an automated garbage collection system, and a runtime reflection library to enable dynamic type inspection. The project implements a structured system for object orientation within C, including support for classes, type classes, and polymorphism. It includes a runtime exception handling system to intercept execution errors and initiate recovery procedures. The framework further provides generic programming capabilities for creating reusable
Cello provides a high-level runtime environment for C that includes an integrated garbage collection system and automated memory lifecycle management, fitting the requirements for a memory management subsystem within a C-based runtime.
jemalloc is a general purpose C memory allocator designed as a replacement for the standard library malloc and free functions. It is a multi-threaded allocation library that emphasizes fragmentation avoidance and scalable concurrency for high-performance applications. The project reduces lock contention by using multiple independent memory arenas and thread-local cache layers. It minimizes latency by offloading the reclamation of unused memory pages to asynchronous background threads and utilizes huge page metadata storage to reduce translation lookaside buffer misses. The system includes a
This is a high-performance general-purpose memory allocator that provides the core dynamic allocation and low-latency features required for managing system memory, though it does not include a garbage collector.
Folly is a collection of high-performance C++ components designed as an extension to the C++ Standard Library for large-scale production environments. It provides specialized toolkits for memory management, concurrency, asynchronous workflows, and low-latency input and output operations. The project distinguishes itself through the provision of lock-free containers and bounded queues to minimize contention in multi-threaded applications, alongside a framework for managing deferred computations using futures and promises. It further offers specialized memory arenas and optimized implementation
Folly provides specialized memory arenas and high-performance allocation primitives designed for low-latency, large-scale C++ environments, making it a relevant library for building memory management subsystems.
The Linux kernel is a monolithic operating system core that manages hardware resources, memory, and process scheduling across diverse computing architectures. It provides a standardized, POSIX-compliant environment for application execution while maintaining a modular driver framework that allows for the dynamic loading and removal of hardware interfaces. The project is distinguished by its high-performance concurrency toolkit, which utilizes lockless synchronization primitives and read-copy-update mechanisms to manage shared data access in multi-core environments. It incorporates a comprehen
The Linux kernel is the foundational system software that implements low-level memory management, including dynamic allocation, NUMA-aware page management, and hardware-level memory tracking, which directly addresses your requirement for a system-level memory management subsystem.
This project is a C-based heap management library designed for systems programming environments that require manual control over memory lifecycles. It provides the fundamental utilities necessary to initialize a designated region of memory and perform dynamic allocation and deallocation of memory blocks. The library utilizes a linked-list-based tracking system to manage memory segments, employing a first-fit strategy to locate available space within the heap. To maintain memory organization and minimize fragmentation, it implements boundary-tag coalescing, which automatically merges adjacent
This is a minimal heap memory allocator written in C that provides the core functionality for dynamic memory allocation in low-level systems, though it lacks advanced features like garbage collection or NUMA awareness.
STL compatible C++ memory allocator library using a new RawAllocator concept that is similar to an Allocator but easier to use and write.
This library provides a suite of C++ memory allocators and management abstractions that directly address the need for low-level allocation and tracking, fitting the category of a memory management component.
Custom memory allocators in C++ to improve the performance of dynamic memory allocation
This repository provides a collection of custom C++ memory allocators designed for high-performance dynamic memory management, directly addressing the core requirement for low-level allocation components.
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 project provides diagnostic and instrumentation tools for detecting memory errors rather than serving as a memory management subsystem for allocating or tracking system memory.
ChakraCore is an embeddable JavaScript engine and high-performance scripting runtime. It provides a just-in-time compiler that converts JavaScript source code into optimized machine code during runtime to increase execution speed and throughput. The engine utilizes a multi-tiered compilation pipeline and tiered machine code generation to balance startup time with execution speed. Memory is managed via a concurrent garbage collector that reclaims unreachable objects on background threads to minimize application pauses. The project provides capabilities for embedded JavaScript execution and au
This is a full JavaScript engine and runtime rather than a low-level memory management library, though it includes a built-in garbage collector as part of its internal execution environment.
CoreCLR is a runtime environment that manages the execution, memory, and basic types for applications built on the .NET platform. It serves as a managed execution environment that handles low-level system interactions and provides primitive data types for high-level application code. The project functions as a JIT compilation engine and a garbage collected runtime. It translates intermediate language into machine code at runtime for execution on specific hardware and automatically reclaims unused memory to prevent leaks. The system covers broad capability areas including managed code executi
This is a full-featured managed runtime environment rather than a low-level memory management library or component, meaning it provides memory management as an internal service for its own execution model rather than as a standalone tool for system-level memory allocation.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| microsoft/mimalloc | 13.1K | C | MIT | |
| bdwgc/bdwgc | 3.4K | C | other | |
| orangeduck/cello |
| 7.1K |
| C |
| NOASSERTION |
| jemalloc/jemalloc | 11K | C | NOASSERTION |
| facebook/folly | 30.4K | C++ | Apache-2.0 |
| torvalds/linux | 237.4K | C | NOASSERTION |
| ccareaga/heap_allocator | 915 | C | MIT |
| foonathan/memory | 1.6K | C++ | Zlib |
| mtrebi/memory-allocators | 2K | C++ | MIT |
| google/sanitizers | 12.4K | C | NOASSERTION |