Hello, I am new to this mailing list and I am reaching out here as it seemed like a good place to ask this question. If this is the wrong place for this question, I apologize.
I would like to get a notification for G1 Young GC pause events and report the time to an external monitoring service. (See the code below where I attempted to listen on a notification) However, what I have noticed is that I never get a 'Notification' even though I am seeing GC logs report the G1 Young GC pauses. Also, I can see the same information in the JFR recording. My application rarely does a full GC, so I am mostly interested in Young G1 GC events and I would like to overlay this information on top of other application metrics. Here is what I have attempted : public class GCEventMonitor implements NotificationListener { public GCEventMonitor(MetricsRecorder metricsRecorder) { this.metricsRecorder = metricsRecorder; //external Service, where I can send information registerGCBeans(); } private void registerGCBeans() { for (GarbageCollectorMXBean gcbean : ManagementFactory.getGarbageCollectorMXBeans()) { // I have noticed two beans get registered here G1 Young and G1 Old through a debugger if (gcbean instanceof NotificationEmitter) { NotificationEmitter emitter = (NotificationEmitter) gcbean; emitter.addNotificationListener(this, null, null); } } } @Override public void handleNotification(Notification notification, Object handback) { *//never gets called* if (notification.getType().equals(GarbageCollectionNotificationInfo.GARBAGE_COLLECTION_NOTIFICATION)) { CompositeData cd = (CompositeData) notification.getUserData(); GarbageCollectionNotificationInfo info = GarbageCollectionNotificationInfo.from(cd); processGCEvent(info, handback); // Extract info.getGcInfo() here and send gcInfo.getDuration() to external service } } } I have set a debug point on handleNotification method, but this method never gets called, even while I can actively see gc logs print the following information. Why am I not getting a notification? Is my configuration/registration/setup incorrect? There is a comment on this stackoverflow question/answer that the VM does not notify when Young GC happens. Is that true? If so, how does JFR record that information? Thanks for your help in advance!
_______________________________________________ hotspot-gc-use mailing list hotspot-gc-use@openjdk.java.net https://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use