A memory allocator that automatically reduces the memory footprint of C/C++ applications. – plasma-umass/Mesh
Mesh: Compacting Memory Management for C/C++
Mesh is a drop in replacement for malloc(3) that can transparently recover from memory fragmentation without any changes to application code.
Mesh is described in detail in a paper (PDF) that appeared at PLDI 2019.
Or watch this talk by Bobby Powers at Strange Loop:
Mesh runs on Linux and macOS. Windows is a work in progress.
Mesh uses bazel as a build system, but wraps it in a Makefile, and has no runtime dependencies other than libc:
$ git clone https://github.com/plasma-umass/mesh $ cd mesh $ make; sudo make install # example: run git with mesh as its allocator: $ LD_PRELOAD=libmesh.so git status
Please open an issue if you have questions (or issues)!
But will it blend?
If you run a program linked against mesh (or with Mesh LD_PRELOAD ed), setting the variable MALLOCSTATS=1 will instruct mesh to print a summary at exit:
$ MALLOCSTATS=1 ./bin/redis-server-mesh ./redis.conf 25216:C 11 Mar 20:27:12.050 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 25216:C 11 Mar 20:27:12.050 #…
Read full article