3 ms·
For the JVM Shenandoah GC [1] can do so as well (or at least very low consistent pauses) and is available via EA builds or the OpenJDK in fedora 24 [2]. This i
by jerven 10y ago
For the JVM Shenandoah GC [1] can do so as well (or at least very low consistent pauses) and is available via EA builds or the OpenJDK in fedora 24 [2].
This is with pointer happy java code, not with special effort to have pointer less data.
[1] http://openjdk.java.net/jeps/189 http://openjdk.java.net/jeps/189
[2] https://fedoraproject.org/wiki/Changes/Shenandoah https://fedoraproject.org/wiki/Changes/Shenandoah
- quotemstr 10y ago> The key to performing concurrent evacuation is having the Java Threads and the GC threads agree on the location of objects. This is accomplished in Shenandoah by the use of a Brooks forwarding pointer. All reads by the Java Threads indirect through this forwarding pointer. All writes to objects in targeted regions must first copy the object and then write to the object in its new location. I'm a bit surprised that indirection is efficient enough to be worth the trouble (since you need reads and writes to branch for the indirected-object case), but I can't argue with results.
- mike_hearn 10y agoBear in mind that's a conceptual description. The read/write barriers are implemented as compiler node graphs and thus can be optimised.