diff --git a/monitor/pom.xml b/monitor/pom.xml index 3aa58c8b..4eda9d9a 100644 --- a/monitor/pom.xml +++ b/monitor/pom.xml @@ -23,7 +23,6 @@ 3.0 3.0 - 5.3.4 2.4.3 @@ -103,9 +102,15 @@ ${file.encoding} ${file.encoding} + + + org.projectlombok + lombok + 1.18.24 + com.zfoo diff --git a/monitor/src/main/java/com/zfoo/monitor/model/JvmMemoryVo.java b/monitor/src/main/java/com/zfoo/monitor/model/JvmMemoryVo.java new file mode 100644 index 00000000..1722d60b --- /dev/null +++ b/monitor/src/main/java/com/zfoo/monitor/model/JvmMemoryVo.java @@ -0,0 +1,53 @@ +package com.zfoo.monitor.model; + +import lombok.Builder; + +import java.lang.management.MemoryUsage; + +/** + * @author yh + * @date 2022/10/10 下午6:44 + */ + +public class JvmMemoryVo { + private String name; + private double total; + private double max; + private double used; + + @Override + public String toString() { + return "JvmMemoryVo{" + + "name='" + name + '\'' + + ", total=" + total + + ", max=" + max + + ", used=" + used + + '}'; + } + + public JvmMemoryVo(String name, MemoryUsage usage) { + this.name=name; + this.total=bitTomb(usage.getCommitted()); + this.max=bitTomb(usage.getMax()); + this.used=bitTomb(usage.getUsed()); + + } + private static double bitTomb(long val){ + return (double) (val/1024/1024); + } + + public String getName() { + return name; + } + + + public double getMax() { + return max; + } + + public double getUsed() { + return used; + } + + +} diff --git a/monitor/src/main/java/com/zfoo/monitor/util/JvmUtils.java b/monitor/src/main/java/com/zfoo/monitor/util/JvmUtils.java new file mode 100644 index 00000000..b29772f4 --- /dev/null +++ b/monitor/src/main/java/com/zfoo/monitor/util/JvmUtils.java @@ -0,0 +1,43 @@ +package com.zfoo.monitor.util; + +import com.sun.jdi.ThreadReference; +import com.sun.tools.attach.AttachNotSupportedException; +import com.sun.tools.attach.VirtualMachine; +import com.sun.tools.attach.spi.AttachProvider; +import com.zfoo.monitor.model.JvmMemoryVo; + +import java.io.IOException; +import java.lang.management.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Properties; + +/** + * @author yh + * @date 2022/10/10 下午6:42 + */ +public class JvmUtils { + + + public static List getJvmInfo(){ + List list=new ArrayList<>(); + + MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean(); + + //堆内存 + MemoryUsage heapMemoryUsage = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage(); + list.add(new JvmMemoryVo("heap",heapMemoryUsage)); + + List memoryPoolMXBeans = ManagementFactory.getMemoryPoolMXBeans(); + for (MemoryPoolMXBean mxBean : memoryPoolMXBeans) { + //获取堆内存明细 + if (MemoryType.HEAP.equals(mxBean.getType())){ + MemoryUsage usage = mxBean.getUsage(); + list.add(new JvmMemoryVo(mxBean.getName(), usage)); + } + } + return list; + } + + +} diff --git a/monitor/src/test/java/com/zfoo/monitor/ApplicationTest.java b/monitor/src/test/java/com/zfoo/monitor/ApplicationTest.java index 52bcd8a7..22e762c8 100644 --- a/monitor/src/test/java/com/zfoo/monitor/ApplicationTest.java +++ b/monitor/src/test/java/com/zfoo/monitor/ApplicationTest.java @@ -13,6 +13,7 @@ package com.zfoo.monitor; +import com.zfoo.monitor.util.JvmUtils; import com.zfoo.monitor.util.OSUtils; import com.zfoo.protocol.util.JsonUtils; import com.zfoo.util.ThreadUtils; @@ -118,4 +119,13 @@ public class ApplicationTest { System.out.println(monitor); } + + + @Test + public void JvmTest(){ + JvmUtils.getJvmInfo().forEach(a->{ + System.out.println(a.toString()); + }); + } + }