mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-06-05 00:16:11 +00:00
Merge pull request #22 from adminoryuan/modify_README
feat[monitor]: 新增获取jvm内存与测试用例
This commit is contained in:
+6
-1
@@ -23,7 +23,6 @@
|
||||
<zfoo.protocol.version>3.0</zfoo.protocol.version>
|
||||
<zfoo.util.version>3.0</zfoo.util.version>
|
||||
|
||||
|
||||
<!-- 核心spring框架 -->
|
||||
<spring.version>5.3.4</spring.version>
|
||||
<spring.boot.version>2.4.3</spring.boot.version>
|
||||
@@ -103,9 +102,15 @@
|
||||
|
||||
<project.build.sourceEncoding>${file.encoding}</project.build.sourceEncoding>
|
||||
<maven.compiler.encoding>${file.encoding}</maven.compiler.encoding>
|
||||
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>1.18.24</version>
|
||||
</dependency>
|
||||
<!-- 依赖的util类库 -->
|
||||
<dependency>
|
||||
<groupId>com.zfoo</groupId>
|
||||
|
||||
@@ -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());
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user