CppCon 2019: Emery Berger “Mesh: Automatically Compacting Your C++ Application's Memory”
Why Hacker News recommends it
HN recommends Berger's talks as fascinating and cites Mesh as mind-blowing memory allocator work.
What it is
Emery Berger's CppCon 2019 talk introducing Mesh, a drop-in malloc replacement that compacts memory in unmodified C and C++ programs. It tackles fragmentation by merging pages without changing pointers.
Recommended by 2 HN commenters across 2 different months, 2019 to 2023.
What Hacker News said
Recommends divan · 2019-12 · on “Ask HN: Best Talks of 2019?”
"Performance matters" by Emery Berger on StrangeLoop'19 is a great talk - [LINK] Also, rest of his talks are also fascinating: - [this video] - [LINK]
Recommends samwho · 2023-05 · on “A highly intuitive visual guide on how memory allocation works, step by step”
You’d need cooperation between your malloc implementation and the application code. It’s possible, but tricky. If your malloc returned a pointer to a pointer, and promised to keep the first level pointer up to date, and was able to lock your application whenever it moved things around, it could work. Someone else already mentioned, but garbage collected languages do actually do this. Because they’re fully in control of memory (the language exposes no raw pointers), they’re able to create the layer of indirection you’ve suggested and move things around as they please. I know at minimum the JVM does this. The term to search for is “heap compaction.” There’s also the weird and wonderful work of
Cites atom3 · 2021-11 · on “GC progress from JDK 8 to JDK 17”
According to the cppcon talk about Mesh [1] (an allocator that implement compaction for C++ programs), the overhead can be massive too (17% overhead measured on firefox, 50% on redis!) [1] [this video]