Doppio uses JavaScript&#x27;s garbage collector. (As a result, it cannot support weak references.) As for concurrency, thread quanta are mapped to JavaScript events, so Doppio can emulate preemptive multithreading. Doppio potentially preempts a &quot;thread&quot; at each function call.<p>The nitty gritty details are in the PLDI 2014 paper [0]. Some details have slightly changed, though (e.g. DoppioJVM supports JDK8 now).<p>[0] <a href="https:&#x2F;&#x2F;plasma-umass.github.io&#x2F;doppio-demo&#x2F;paper.pdf" rel="nofollow">https:&#x2F;&#x2F;plasma-umass.github.io&#x2F;doppio-demo&#x2F;paper.pdf</a>