IBM Support

IJ07980: JAVA SLOWDOWN DUE TO REPEATED MONITOR RESERVATION/CANCELLATION

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

 

APAR status

  • Closed as program error.

Error description

  • Error Message: N/A
    .
    Stack Trace: N/A
    .
    Performance degrades after upgrading Java from version 8 through
    8 SR4 FP11, to version 8 SR5 through 8 SR5 FP17. This only
    occurs on x86 and POWER platforms, and only when the application
    shares instances of StringBuffer or Random amongst threads.
    

Local fix

  • It is possible to work around the issue by passing
    -Xjit:disableLockReservation on the command line.
    

Problem summary

  • The JVM has a feature called lock reservation, which allows the
    JIT compiler to avoid expensive locked memory accesses when
    synchronizing on objects of particular types. The drawback is
    that if one thread reserves an object's monitor, and a second
    thread later attempts to lock the same monitor, the latter
    thread must cancel the reservation, which involves waiting for
    the former thread to pause. Furthermore, certain usage patterns
    can cause a monitor to undergo a cycle of repeated reservation
    and cancellation. Starting in Java 8 SR5, the JVM makes use of
    lock reservation by default for all StringBuffer and Random
    objects locked by calling a synchronized method.
    

Problem conclusion

  • The JVM has been modified so that on x86 it will not reserve a
    monitor that has already had a reservation canceled.
    Unfortunately, this problem can still occur on POWER as of Java
    8 SR5 FP20.
    .
    This APAR will be fixed in the following Java Releases:
       8    SR5 FP20  (8.0.5.20)
    .
    Contact your IBM Product's Service Team for these Service
    Refreshes and Fix Packs.
    For those running stand-alone, information about the available
    Service Refreshes and Fix Packs can be found at:
               https://www.ibm.com/developerworks/java/jdk/
    

Temporary fix

Comments

APAR Information

  • APAR number

    IJ07980

  • Reported component name

    JIT

  • Reported component ID

    620700124

  • Reported release

    130

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2018-07-23

  • Closed date

    2018-07-23

  • Last modified date

    2018-07-23

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    JIT

  • Fixed component ID

    620700124

Applicable component levels

[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSC9HBA","label":"Just In Time (JIT) Compiler"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"130","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
23 July 2018