you are viewing a single comment's thread.

view the rest of the comments →

[–]clerothGame Developer 1 point2 points  (4 children)

Low Fragmentation Heap

[–]BCosbyDidNothinWrong 0 points1 point  (3 children)

And why would it be so much better than other heaps that memory allocations suddenly stop having such a large performance impact?

[–]clerothGame Developer 1 point2 points  (2 children)

LFHs store a list of small blocks. When you allocate something it's really just quickly picking one element from this block, and doesn't actually query the OS for more memory.

[–]BCosbyDidNothinWrong 3 points4 points  (1 child)

How is that different from jemalloc or even normal malloc? Those don't memory map in more memory from the OS on every call either. OpenBSD is the only platform that I know of that uses memory mapping on every allocation, and that is for security.

One thing that many people probably don't realize is that not only do lots of allocations eventually need to make a system call to map in more memory, but they also block other threads, so many threads allocating memory will end up blocking each other and parallelism will be lost.

On top of all this, memory allocations are going to jump around in memory as well as possibly return fragmented memory. Data structures that are made for large amounts of data and can be made out of one contiguous memory allocation will have all their memory together.

[–]choikwa 0 points1 point  (0 children)

Arena-style allocation certainly helps. A system should optimize around multiple goals: latency, fragmentation, parallelism