Skip to content

Commit 9733706

Browse files
authored
Support jdk17 zgc (#541)
1 parent d074a0a commit 9733706

7 files changed

Lines changed: 41 additions & 43 deletions

File tree

CHANGES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Release Notes.
55
8.17.0
66
------------------
77

8+
* Support Jdk17 ZGC metric collect
89

910
#### Documentation
1011

apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/CMSGCModule.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,4 @@ protected String getNewGCName() {
3636
return "ParNew";
3737
}
3838

39-
@Override
40-
protected String getNormalGCName() {
41-
return null;
42-
}
4339
}

apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/G1GCModule.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,4 @@ protected String getNewGCName() {
3636
return "G1 Young Generation";
3737
}
3838

39-
@Override
40-
protected String getNormalGCName() {
41-
return null;
42-
}
4339
}

apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/GCModule.java

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,12 @@
1818

1919
package org.apache.skywalking.apm.agent.core.jvm.gc;
2020

21+
import org.apache.skywalking.apm.network.language.agent.v3.GC;
22+
import org.apache.skywalking.apm.network.language.agent.v3.GCPhase;
23+
2124
import java.lang.management.GarbageCollectorMXBean;
2225
import java.util.LinkedList;
2326
import java.util.List;
24-
import org.apache.skywalking.apm.network.language.agent.v3.GC;
25-
import org.apache.skywalking.apm.network.language.agent.v3.GCPhase;
2627

2728
public abstract class GCModule implements GCMetricAccessor {
2829
private List<GarbageCollectorMXBean> beans;
@@ -31,8 +32,6 @@ public abstract class GCModule implements GCMetricAccessor {
3132
private long lastYGCCount = 0;
3233
private long lastOGCCollectionTime = 0;
3334
private long lastYGCCollectionTime = 0;
34-
private long lastNormalGCCount = 0;
35-
private long lastNormalGCTime = 0;
3635

3736
public GCModule(List<GarbageCollectorMXBean> beans) {
3837
this.beans = beans;
@@ -64,15 +63,6 @@ public List<GC> getGCList() {
6463
long time = bean.getCollectionTime();
6564
gcTime = time - lastOGCCollectionTime;
6665
lastOGCCollectionTime = time;
67-
} else if (name.equals(getNormalGCName())) {
68-
phase = GCPhase.NORMAL;
69-
long collectionCount = bean.getCollectionCount();
70-
gcCount = collectionCount - lastNormalGCCount;
71-
lastNormalGCCount = collectionCount;
72-
73-
long time = bean.getCollectionTime();
74-
gcTime = time - lastNormalGCTime;
75-
lastNormalGCTime = time;
7666
} else {
7767
continue;
7868
}
@@ -87,5 +77,4 @@ public List<GC> getGCList() {
8777

8878
protected abstract String getNewGCName();
8979

90-
protected abstract String getNormalGCName();
9180
}

apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/ParallelGCModule.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,4 @@ protected String getNewGCName() {
3636
return "PS Scavenge";
3737
}
3838

39-
@Override
40-
protected String getNormalGCName() {
41-
return null;
42-
}
43-
4439
}

apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/SerialGCModule.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,4 @@ protected String getNewGCName() {
3636
return "Copy";
3737
}
3838

39-
@Override
40-
protected String getNormalGCName() {
41-
return null;
42-
}
4339
}

apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/ZGCModule.java

Lines changed: 37 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,27 +18,52 @@
1818

1919
package org.apache.skywalking.apm.agent.core.jvm.gc;
2020

21+
import org.apache.skywalking.apm.network.language.agent.v3.GC;
22+
import org.apache.skywalking.apm.network.language.agent.v3.GCPhase;
23+
2124
import java.lang.management.GarbageCollectorMXBean;
25+
import java.util.LinkedList;
2226
import java.util.List;
2327

24-
public class ZGCModule extends GCModule {
28+
public class ZGCModule implements GCMetricAccessor {
29+
private List<GarbageCollectorMXBean> beans;
30+
31+
private long lastNormalGCCount = 0;
32+
private long lastNormalGCTime = 0;
2533

2634
public ZGCModule(List<GarbageCollectorMXBean> beans) {
27-
super(beans);
35+
this.beans = beans;
2836
}
2937

3038
@Override
31-
protected String getOldGCName() {
32-
return null;
33-
}
39+
public List<GC> getGCList() {
40+
List<GC> gcList = new LinkedList<GC>();
41+
for (GarbageCollectorMXBean bean : beans) {
42+
String name = bean.getName();
43+
long gcCount = 0;
44+
long gcTime = 0;
45+
if (name.equals("ZGC")) {
46+
long collectionCount = bean.getCollectionCount();
47+
gcCount = collectionCount - lastNormalGCCount;
48+
lastNormalGCCount = collectionCount;
3449

35-
@Override
36-
protected String getNewGCName() {
37-
return null;
38-
}
50+
long time = bean.getCollectionTime();
51+
gcTime = time - lastNormalGCTime;
52+
lastNormalGCTime = time;
53+
} else if (name.equals("ZGC Cycles")) {
54+
long collectionCount = bean.getCollectionCount();
55+
gcCount = collectionCount - lastNormalGCCount;
56+
lastNormalGCCount = collectionCount;
57+
} else if (name.equals(" ZGC Pauses")) {
58+
long time = bean.getCollectionTime();
59+
gcTime = time - lastNormalGCTime;
60+
lastNormalGCTime = time;
61+
} else {
62+
continue;
63+
}
64+
gcList.add(GC.newBuilder().setPhase(GCPhase.NORMAL).setCount(gcCount).setTime(gcTime).build());
65+
}
3966

40-
@Override
41-
protected String getNormalGCName() {
42-
return "ZGC";
67+
return gcList;
4368
}
4469
}

0 commit comments

Comments
 (0)