Yes, it's very easy to make pause times low if you're willing to make allocation expensive - it's all trade-offs.
In multicore's case it's about keeping low pause times while also keeping allocation cheap _and_ maintaining throughput.
In multicore's case it's about keeping low pause times while also keeping allocation cheap _and_ maintaining throughput.
I don't really understand why not. Can you expand on it? Doesn't the JVM for example do thread-local allocations in a conventional shared-memory parallel environment?
To avoid frequent synchronisation we could have gone with a (potentially generational) non-moving collector for the minor GC which would still have preserved the C API, probably allowed for very low pauses but would have made allocation more expensive.