feat[monitor]: 新增获取jvm内存与测试用例

This commit is contained in:
adminoryuan committed 2022-10-10 21:39:01 +08:00
1 parent 75f3df55db
commit d308521ab7
4 files changed
+112 -1

No files matched your search

@@ -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;
}
}
@@ -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<JvmMemoryVo> getJvmInfo(){
List<JvmMemoryVo> list=new ArrayList<>();
MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean();
//堆内存
MemoryUsage heapMemoryUsage = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();
list.add(new JvmMemoryVo("heap",heapMemoryUsage));
List<MemoryPoolMXBean> 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;
}
}
@@ -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());
});
}
}