Is option "ShenandoahAllocationThreshold" still experimental in OpenJDK15 ?

Roman Kennke rkennke at redhat.com
Wed Sep 16 19:19:18 UTC 2020


Am Mittwoch, den 16.09.2020, 18:36 +0200 schrieb Holger Hoffstätte:
> On 2020-09-16 18:13, thevenet.fred at free.fr wrote:
> > I've been using ShenandoahGC since the release of OpenJDK 13 (as
> > provided by Azul[1]) to benefit from its "
> > ShenandoahGCHeuristics=compact" option which is a good fit for my
> > need (a generally small, non critical, client application with
> > transient needs for a larger heap).
> > 
> > More specifically, I use the following parameters: -XX:
> > +UnlockExperimentalVMOptions -XX:+UseShenandoahGC
> > -XX:ShenandoahGCHeuristics=compact
> > -XX:ShenandoahAllocationThreshold=20
> 
> Where did you find my options? :D
> 
> > Starting with 15, I was under the impression I no longer needed to
> > set +UnlockExperimentalVMOptions, to use the above options. Yet
> > starting a JVM with without unlocking experimental options yields
> > the
> > following error: "Error: VM option 'ShenandoahAllocationThreshold'
> > is
> > experimental and must be enabled via
> > -XX:+UnlockExperimentalVMOptions."
> > 
> > If I simply omit "ShenandoahAllocationThreshold", then the JVM
> > starts.
> > 
> > Is this the expected behaviour? If so, is there a list of
> > Shenandoah-
> > specific options that are still experimental somewhere?
> 
> I don't think it's the expected behaviour (as of 15) and can confirm
> that
> I get the same with the AdoptOpenJDK 15 binary that I'm currently
> testing,
> so it's probably just an oversight/bug when parsing the arguments and
> checking their status. AFAIK there is nothing experimental about the
> ShenandoahAllocationThreshold flag itself or compact mode.

It is expected. 'Experimental' with regards to tuning flags means that
we might want to change our minds (e.g. renaming them, or come up with
different tuning/heuristics parameters, etc). It doesn't mean that they
are unstable or that you shouldn't use them in production. It just
means that they might require some adjustments when upgrading your JDK
to a later version. We left most of the tuning flags as experimental
for now.

Does that make sense?

Thanks,
Roman



More information about the shenandoah-dev mailing list