libumem should allow you to specify an allocator
The default libumem allocator is the 'instant-fit' allocator. For various reasons, this can cause pathological memory growth of the heap, but without memory from it being in use. libumem, like vmem in the kernel supports three other memory allocators: best-fit, next-fit, and first-fit. There is currently no way to change this default otherwise.
To facilitate this, we add a new UMEM_OPTIONS, where you can specify allocator=(best|next|first|instant).