Increased safepoint cleanup tasks in Java 11 (vs 8)

Vitaly Davidovich vitalyd at gmail.com
Wed Jun 5 12:33:26 UTC 2019


Hi all,

I'm looking at a Java 11 (11.0.3) application and observing a *lot* more
safepoint cleanup operations than on the latest Java 8 VM.  I was hoping
someone could shed some light on this, and perhaps suggest a way to get
more information about the nature of the cleanup.

The guaranteed safepoint poll timer fires every (by default) 1 sec, which
is no different from 8.  However, as mentioned, it looks like 11 has work
to do during a poll a lot more frequently.  Unfortunately, the ULF logging
that I have doesn't tell me the precise nature of the cleanup:
[... timestamp ...][info ][safepoint ] Entering safepoint region: Cleanup
[... timestamp ...][info ][safepoint ] Leaving safepoint region

The "Cleanup", unfortunately, appears to be the generic
vm_operation_name().  But I suspect it's one of the tasks listed in the
SafepointCleanupTasks enum:
https://github.com/openjdk/jdk11u/blob/737d8437886ad97c6ed21a25b9911c10b3886f61/src/hotspot/share/runtime/safepoint.hpp#L80

My guess would be it's SAFEPOINT_CLEANUP_STRING_TABLE_REHASH because tiered
compilation is disabled, ParallelGC is being used, and biased locking is
disabled; all of this is the same as on Java 8.  Or might this be something
else? Presumably it's something "new" in Java 11 that triggers inside
https://github.com/openjdk/jdk11u/blob/737d8437886ad97c6ed21a25b9911c10b3886f61/src/hotspot/share/runtime/safepoint.cpp#L644

Does anyone have ideas on pinpointing this further? How do I get the
precise cleanup operation to show up in the log?

Thanks


More information about the hotspot-runtime-dev mailing list