@@ -24,40 +24,20 @@ final class JvmGCPause {
24
24
25
25
private static final System .Logger log = AppLog .getLogger ("io.avaje.metrics" );
26
26
27
- static void createMeters (MetricRegistry registry , boolean withDetails ) {
27
+ static void createMeters (MetricRegistry registry ) {
28
28
if (!extensionsPresent () || !hasNotifications ()) {
29
29
return ;
30
30
}
31
- final var jcPause = new JvmGCPause ();
32
- jcPause .createMeters (registry );
33
- }
34
-
35
- // private final List<Runnable> cleanup = new ArrayList<>();
36
31
37
- void createMeters (MetricRegistry registry ) {
38
- final var listener = new GcListener (registry );
32
+ final var listener = new Listener (registry );
39
33
final var filter = new Filter ();
40
34
for (GarbageCollectorMXBean gcBean : ManagementFactory .getGarbageCollectorMXBeans ()) {
41
- if (!(gcBean instanceof NotificationEmitter )) {
42
- continue ;
35
+ if (gcBean instanceof NotificationEmitter ) {
36
+ final var emitter = (NotificationEmitter ) gcBean ;
37
+ emitter .addNotificationListener (listener , filter , null );
43
38
}
44
- final var emitter = (NotificationEmitter ) gcBean ;
45
- emitter .addNotificationListener (listener , filter , null );
46
-
47
- // cleanup.add(() -> {
48
- // try {
49
- // notificationEmitter.removeNotificationListener(listener);
50
- // } catch (ListenerNotFoundException ignore) {
51
- // // ignore
52
- // }
53
- // });
54
39
}
55
40
}
56
- //
57
- // @Override
58
- // public void close() {
59
- // // cleanup.forEach(Runnable::run);
60
- // }
61
41
62
42
static final class Filter implements NotificationFilter {
63
43
@ Override
@@ -66,12 +46,14 @@ public boolean isNotificationEnabled(Notification notification) {
66
46
}
67
47
}
68
48
69
- static final class GcListener implements NotificationListener {
49
+ static final class Listener implements NotificationListener {
70
50
71
- private final MetricRegistry registry ;
51
+ private final Meter concurrent ;
52
+ private final Meter pause ;
72
53
73
- GcListener (MetricRegistry registry ) {
74
- this .registry = registry ;
54
+ Listener (MetricRegistry registry ) {
55
+ this .concurrent = registry .meter ("jvm.gc.concurrent" );
56
+ this .pause = registry .meter ("jvm.gc.pause" );
75
57
}
76
58
77
59
@ Override
@@ -83,14 +65,10 @@ public void handleNotification(Notification notification, Object ref) {
83
65
String gcCause = notificationInfo .getGcCause ();
84
66
long duration = notificationInfo .getGcInfo ().getDuration ();
85
67
86
- //Tags tags = Tags.of("gc:" + gcName, "action:" + gcAction, "cause:" + gcCause);
87
68
if (isConcurrentPhase (gcCause , gcName )) {
88
- Meter meter = registry .meter ("jvm.gc.concurrent" );//, tags);
89
- meter .addEvent (duration );
90
-
69
+ concurrent .addEvent (duration );
91
70
} else {
92
- Meter meter = registry .meter ("jvm.gc.pause" );//, tags);
93
- meter .addEvent (duration );
71
+ pause .addEvent (duration );
94
72
}
95
73
}
96
74
}
0 commit comments