Maybe I'm naive here, but shouldn't it be possible to detect when we reach the limit? Then we could unmap some buffers (preferably ones that haven't been accessed for some time) only when it's needed.