I’m not sure it was worth reviving the thread.
An arena allocation scheme partly addresses the original issue.
As for distinct allocators, I’m not sure if that is a particular issue as long as you don’t try to free something you did not allocate.
For example, I played with integrating alternative allocators in ArrayAllocators.jl:
The basic idea was to use unsafe_wrap with own = false to tell Julia not to free that memory by itself.
The one problem with this is I was not able to tell the Julia GC how much memory I had allocated outside of it, while still having to rely on finalization to cleanup.