This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-java.git


The following commit(s) were added to refs/heads/main by this push:
     new 97337063f8 Support jdk17 zgc (#541)
97337063f8 is described below

commit 97337063f8035f729c3262eff25fd957a108433e
Author: xu1009 <[email protected]>
AuthorDate: Thu Jun 1 13:06:15 2023 +0800

    Support jdk17 zgc (#541)
---
 CHANGES.md                                         |  1 +
 .../apm/agent/core/jvm/gc/CMSGCModule.java         |  4 --
 .../apm/agent/core/jvm/gc/G1GCModule.java          |  4 --
 .../skywalking/apm/agent/core/jvm/gc/GCModule.java | 17 ++------
 .../apm/agent/core/jvm/gc/ParallelGCModule.java    |  5 ---
 .../apm/agent/core/jvm/gc/SerialGCModule.java      |  4 --
 .../apm/agent/core/jvm/gc/ZGCModule.java           | 49 ++++++++++++++++------
 7 files changed, 41 insertions(+), 43 deletions(-)

diff --git a/CHANGES.md b/CHANGES.md
index 5a18dc55a9..a641b1cb68 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -5,6 +5,7 @@ Release Notes.
 8.17.0
 ------------------
 
+* Support Jdk17 ZGC metric collect
 
 #### Documentation
 
diff --git 
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/CMSGCModule.java
 
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/CMSGCModule.java
index 521bf37e96..d1f6f058d8 100644
--- 
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/CMSGCModule.java
+++ 
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/CMSGCModule.java
@@ -36,8 +36,4 @@ public class CMSGCModule extends GCModule {
         return "ParNew";
     }
 
-    @Override
-    protected String getNormalGCName() {
-        return null;
-    }
 }
diff --git 
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/G1GCModule.java
 
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/G1GCModule.java
index c8b8666f35..733a031bb6 100644
--- 
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/G1GCModule.java
+++ 
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/G1GCModule.java
@@ -36,8 +36,4 @@ public class G1GCModule extends GCModule {
         return "G1 Young Generation";
     }
 
-    @Override
-    protected String getNormalGCName() {
-        return null;
-    }
 }
diff --git 
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/GCModule.java
 
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/GCModule.java
index 50878f7c9e..73d54acfcc 100644
--- 
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/GCModule.java
+++ 
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/GCModule.java
@@ -18,11 +18,12 @@
 
 package org.apache.skywalking.apm.agent.core.jvm.gc;
 
+import org.apache.skywalking.apm.network.language.agent.v3.GC;
+import org.apache.skywalking.apm.network.language.agent.v3.GCPhase;
+
 import java.lang.management.GarbageCollectorMXBean;
 import java.util.LinkedList;
 import java.util.List;
-import org.apache.skywalking.apm.network.language.agent.v3.GC;
-import org.apache.skywalking.apm.network.language.agent.v3.GCPhase;
 
 public abstract class GCModule implements GCMetricAccessor {
     private List<GarbageCollectorMXBean> beans;
@@ -31,8 +32,6 @@ public abstract class GCModule implements GCMetricAccessor {
     private long lastYGCCount = 0;
     private long lastOGCCollectionTime = 0;
     private long lastYGCCollectionTime = 0;
-    private long lastNormalGCCount = 0;
-    private long lastNormalGCTime = 0;
 
     public GCModule(List<GarbageCollectorMXBean> beans) {
         this.beans = beans;
@@ -64,15 +63,6 @@ public abstract class GCModule implements GCMetricAccessor {
                 long time = bean.getCollectionTime();
                 gcTime = time - lastOGCCollectionTime;
                 lastOGCCollectionTime = time;
-            } else if (name.equals(getNormalGCName())) {
-                phase = GCPhase.NORMAL;
-                long collectionCount = bean.getCollectionCount();
-                gcCount = collectionCount - lastNormalGCCount;
-                lastNormalGCCount = collectionCount;
-
-                long time = bean.getCollectionTime();
-                gcTime = time - lastNormalGCTime;
-                lastNormalGCTime = time;
             } else {
                 continue;
             }
@@ -87,5 +77,4 @@ public abstract class GCModule implements GCMetricAccessor {
 
     protected abstract String getNewGCName();
 
-    protected abstract String getNormalGCName();
 }
diff --git 
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/ParallelGCModule.java
 
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/ParallelGCModule.java
index 60e5325628..1773756e39 100644
--- 
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/ParallelGCModule.java
+++ 
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/ParallelGCModule.java
@@ -36,9 +36,4 @@ public class ParallelGCModule extends GCModule {
         return "PS Scavenge";
     }
 
-    @Override
-    protected String getNormalGCName() {
-        return null;
-    }
-
 }
diff --git 
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/SerialGCModule.java
 
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/SerialGCModule.java
index 3279440a7c..7b5a5425ed 100644
--- 
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/SerialGCModule.java
+++ 
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/SerialGCModule.java
@@ -36,8 +36,4 @@ public class SerialGCModule extends GCModule {
         return "Copy";
     }
 
-    @Override
-    protected String getNormalGCName() {
-        return null;
-    }
 }
diff --git 
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/ZGCModule.java
 
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/ZGCModule.java
index 87f9f6537b..4c123fa45d 100644
--- 
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/ZGCModule.java
+++ 
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/ZGCModule.java
@@ -18,27 +18,52 @@
 
 package org.apache.skywalking.apm.agent.core.jvm.gc;
 
+import org.apache.skywalking.apm.network.language.agent.v3.GC;
+import org.apache.skywalking.apm.network.language.agent.v3.GCPhase;
+
 import java.lang.management.GarbageCollectorMXBean;
+import java.util.LinkedList;
 import java.util.List;
 
-public class ZGCModule extends GCModule {
+public class ZGCModule implements GCMetricAccessor {
+    private List<GarbageCollectorMXBean> beans;
+
+    private long lastNormalGCCount = 0;
+    private long lastNormalGCTime = 0;
 
     public ZGCModule(List<GarbageCollectorMXBean> beans) {
-        super(beans);
+        this.beans = beans;
     }
 
     @Override
-    protected String getOldGCName() {
-        return null;
-    }
+    public List<GC> getGCList() {
+        List<GC> gcList = new LinkedList<GC>();
+        for (GarbageCollectorMXBean bean : beans) {
+            String name = bean.getName();
+            long gcCount = 0;
+            long gcTime = 0;
+            if (name.equals("ZGC")) {
+                long collectionCount = bean.getCollectionCount();
+                gcCount = collectionCount - lastNormalGCCount;
+                lastNormalGCCount = collectionCount;
 
-    @Override
-    protected String getNewGCName() {
-        return null;
-    }
+                long time = bean.getCollectionTime();
+                gcTime = time - lastNormalGCTime;
+                lastNormalGCTime = time;
+            } else if (name.equals("ZGC Cycles")) {
+                long collectionCount = bean.getCollectionCount();
+                gcCount = collectionCount - lastNormalGCCount;
+                lastNormalGCCount = collectionCount;
+            } else if (name.equals(" ZGC Pauses")) {
+                long time = bean.getCollectionTime();
+                gcTime = time - lastNormalGCTime;
+                lastNormalGCTime = time;
+            } else {
+                continue;
+            }
+            
gcList.add(GC.newBuilder().setPhase(GCPhase.NORMAL).setCount(gcCount).setTime(gcTime).build());
+        }
 
-    @Override
-    protected String getNormalGCName() {
-        return "ZGC";
+        return gcList;
     }
 }

Reply via email to