Long JVM Pauses After GC Log Rotation on Solaris
Last updated on JUNE 16, 2018
Applies to:Java SE JDK and JRE - Version 7 to 8
Oracle Solaris on SPARC (64-bit)
Oracle Solaris on SPARC (32-bit)
Oracle Solaris on x86-64 (64-bit)
Oracle Solaris on x86 (32-bit)
On Solaris, Java SE 7 and 8 can experience extremely long pauses directly after GC log rotation.
Affects Java versions:
- 1.7.0_80 - 1.7.0_97
- 1.8.0_20 - 1.8.0_77
The problem can be reproduced with the following steps:
- Start any Java process that creates many entries in /proc/self/map and uses GC log rotation. To create a Java process with many entries in /proc/self/map, the application can have many threads and/or open many Jar files with a classloader.
- Add -XX:+PrintGCStoppedTime to track safepoint pauses.
- Trigger enough activity such that the GC log rotates.
- Watch a long safepoint pause directly after log rotation. The problem should be easily noticeable with about 500-1000 entries in /proc/self/map.
Sign In with your My Oracle Support account
Don't have a My Oracle Support account? Click to get started
My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms