CAUTION: This site hosts draft documentation for the next release. For published content of the latest release, visit www.eclipse.org/openj9/docs

-XX:[+|-]GlobalLockReservation

(AIX and Linux on Power systems only)

The -XX:+GlobalLockReservation option enables an optimization targeted towards more efficient handling of locking and unlocking Java™ objects.

Syntax

    -XX:[+|-]GlobalLockReservation
    -XX:+GlobalLockReservation:<parameter>
Setting Effect Default
-XX:+GlobalLockReservation Enable
-XX:-GlobalLockReservation Disable yes

This optimization is targeted towards applications with lots of uncontended locked objects that are being locked just to be safe. When enabled, heuristics are used to try and determine when an object will be exclusively locked by a single thread so that faster, more specialized code can be used for locking the object. If the heuristics incorrectly identify an object as a target for the optimization, performance might be adversely affected.

The -XX:-GlobalLockReservation option turns off a previously enabled -XX:+GlobalLockReservation option.

Parameters

Advanced tuning parameters are shown in the following table:

Parameter Effect
reservedTransitionThreshold Changes amount of time spent analyzing an object.
reservedAbsoluteThreshold Changes amount of time spent analyzing a class for compatibility.
minimumReservedRatio Changes aggression level for marking a class as highly compatible.
cancelAbsoluteThreshold Changes amount of time spent analyzing a class for incompatibility.
minimumLearningRatio Changes aggression level for marking a class as highly incompatible.

reservedTransitionThreshold

    -XX:+GlobalLockReservation:reservedTransitionThreshold=<value>
Setting Value Default
<value> number 1

Number of times an object is locked by the same thread before it is considered reserved minus a value of 2. So, with a default value of 1, an object can be reserved the third time it is locked. <value> can be 0-3 inclusive. Values of 4 or higher are treated as infinity.

reservedAbsoluteThreshold

    -XX:+GlobalLockReservation:reservedAbsoluteThreshold=<value>
Setting Value Default
<value> number 10

Minimum number of objects of a class that get reserved before the class can be considered highly compatible. Objects of that class are reserved the first time they are locked. Values of 65536 or higher are treated as infinity.

minimumReservedRatio

    -XX:+GlobalLockReservation:minimumReservedRatio=<value>
Setting Value Default
<value> number 1024

Minimum ratio of reserved objects to flat objects before a class can be considered highly compatible. Values of 65536 or higher are treated as infinity.

cancelAbsoluteThreshold

    -XX:+GlobalLockReservation:cancelAbsoluteThreshold=<value>
Setting Value Default
<value> number 10

Minimum number of objects of a class that get converted to flat before the class can be considered highly incompatible. Objects of that class are never reserved. Values of 65536 or higher are treated as infinity.

minimumLearningRatio

    -XX:+GlobalLockReservation:minimumLearningRatio=<value>
Setting Value Default
<value> number 256

Minimum ratio of reserved objects to flat objects to prevent class from being considered highly incompatible. Values of 65536 or higher are treated as infinity.