The new info level log messages are as follows:
[info 2021/03/16 11:33:56.975 EDT xxx <Notification Handler1> tid=0x34] A tenured heap garbage collection has occurred. New tenured heap consumption: 41404928
[info 2021/03/16 11:34:39.587 EDT xxx <Notification Handler1> tid=0x34] A tenured heap garbage collection has occurred. New tenured heap consumption: 33339736
[info 2021/03/16 11:35:20.106 EDT xxx <Notification Handler1> tid=0x34] A tenured heap garbage collection has occurred. New tenured heap consumption: 28388320
[info 2021/03/16 12:04:08.874 EDT xxx <Notification Handler1> tid=0x34] A tenured heap garbage collection has occurred. New tenured heap consumption: 19711648
[info 2021/03/16 12:04:51.297 EDT xxx <Notification Handler1> tid=0x34] A tenured heap garbage collection has occurred. New tenured heap consumption: 16823952
[info 2021/03/16 12:35:34.843 EDT xxx<Notification Handler1> tid=0x34] A tenured heap garbage collection has occurred. New tenured heap consumption: 16129328
=================
You should evaluate/filter these messages over time across all members. In doing so, you can determine the following per member:
- You can determine whether the heap is growing over time and then map that to your known entry count growth. If it is growing over time with no entry count growth, then this needs to be understood and could warrant a new ticket.
- You can determine the frequency of the collections. If very frequent or much too frequent, it is a sign that your tenured collections are happening too frequently and you likely need to increase heap or for example your CMSInitiatingOccupancyFraction if using CMS.
Important note for G1GCIn early versions of G1GC, G1 does not send out notifications for mixed collections. It would only send out such notifications for
FULL GC's which we try to avoid in GemFire. GemFire essentially registers with the JVM to get notified when a tenured collection occurs.
With early versions of G1, mixed collections would not drive the notifications. That said, starting in
Java 8 build 212, G1GC did start sending notifications for mixed collections and so our new log messages will appear for CMS on any supported version of GemFire and for G1 post build openJDK 212.
As for other versions of Java and GC algorithms, GemFire will log the messages if and only if we receive the notifications from the JVM corresponding to the tenured collections. This requires the
MemoryPoolMXBean isUsageThresholdSupported() and
isCollectionUsageThresholdSupported() API's to be true for the given JVM/GC algorithm combination.
In any case, we will either log the message or it will either be a no-op or you will see a log message, similar to the one below, indicating an exception occurred:
An Exception occurred while attempting to print out tenured heap consumption
If you do not see these new messages helping you, consider getting to a version of the JDK that will send the notifications for the GC algorithm you have chosen to use.
Checklist:
The recommendation upon any tools driving concerns would be to examine our GemFire logs to see the true tenured consumption over time. These should be examined across all members to assess whether consumption has increased over time or even the frequency of the log messages.