If you were incentivized enough (by being an HFT firm, say), is there anything stopping you from re-implementing the Erlang memory/GC-model on the JVM? I know the JVM has green-threads (somewhere amongst a million other concurrency primitives); but could it be modified to give each green-thread its own heap, and then do background-GC passes of each green-thread heap when that green-thread isn't currently scheduled?

You'd certainly have to write your Java somewhat differently—though you wouldn't necessarily have to move to a full-fledged no-shared-memory message-passing model to see a benefit. (For example, every JVM object could be treated similarly to Erlang's large binaries, where they exist as refcounted objects in a shared heap, and then the ref-handle within the green-thread heap is itself refcounted by the green-thread, so the shared heap only needs to be synchronously updated when a green-thread heap is discovered, on GC, to have released its last ref-ref.)

> is there anything stopping you from re-implementing the Erlang memory/GC-model on the JVM

Apparently not, never used it, but impressive: https://github.com/trifork/erjang