Hacker News new | past | comments | ask | show | jobs | submit login
Shenandoah GC: What We Know in 2018 [video] (youtube.com)
52 points by luu 7 months ago | hide | past | web | favorite | 5 comments

Buried in a slide @ 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/).

Run the contained Java executable with -XX:+UseShenandoahGC

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

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.

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

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/...

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact