
Shenandoah GC: What We Know in 2018 [video] - luu
https://www.youtube.com/watch?v=qBQtbkmURiQ
======
jhomedall
Buried in a slide @
[https://youtu.be/qBQtbkmURiQ?t=766](https://youtu.be/qBQtbkmURiQ?t=766):

You can try an in-development version of the GC with the 'shipilev/openjdk-
shenandoah' Docker image ([https://hub.docker.com/r/shipilev/openjdk-
shenandoah/](https://hub.docker.com/r/shipilev/openjdk-shenandoah/)).

Run the contained Java executable with -XX:+UseShenandoahGC

------
mikevm
How does Shenandoah compare to ZGC? Aren't they in direct competition with one
another?

~~~
needusername
From what I understand the goals are similar but the approaches are different.

\- Shenandoah uses Brooks-style forward pointers whereas ZGC uses colored
pointers and off-heap forwarding tables. Meaning Shenandoah has a bigger
impact on heap footprint but less offheap data meaning the heap size is closer
to the RSS.

\- Shenandoah runs on Windows and macOS if you build from source, AFAIK this
is a non-goal for ZGC.

\- Shenandoah tries to return unused heap to the OS wheres currently the
recommendation for ZGC seems to be -Xms == -Xmx. In addition ZGC tripple maps
the heap which can lead to interesting challenges in resource usage
accounting.

\- None of them are generational although Shenandoah allows for custom
policies and has short cuts if you application is young-only.

------
exabrial
I wonder if anyone has started work on applying machine learning to gc yet?

~~~
sorokod
Not ML, but the jmh framework has a toy example where a genetic algorithm is
used to tweak runtime parameters.

Edit, here it is: [http://hg.openjdk.java.net/code-
tools/jmh/file/3769055ad883/...](http://hg.openjdk.java.net/code-
tools/jmh/file/3769055ad883/jmh-
samples/src/main/java/org/openjdk/jmh/samples/JMHSample_25_API_GA.java)

