Skip to content

Commit ac3b4b3

Browse files
committed
feat: 更新 JMX 教程(https://www.wdbyte.com/java/jmx.html)
1 parent ba544fb commit ac3b4b3

4 files changed

Lines changed: 130 additions & 0 deletions

File tree

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.wdbyte.jmx;
2+
3+
import java.lang.management.CompilationMXBean;
4+
import java.lang.management.GarbageCollectorMXBean;
5+
import java.lang.management.ManagementFactory;
6+
import java.lang.management.MemoryMXBean;
7+
import java.lang.management.MemoryManagerMXBean;
8+
import java.lang.management.MemoryUsage;
9+
import java.lang.management.OperatingSystemMXBean;
10+
import java.util.List;
11+
import java.util.stream.Collectors;
12+
13+
/**
14+
* JMX JVM
15+
*
16+
* @author https://www.wdbyte.com
17+
*/
18+
public class JavaManagementExtensions {
19+
20+
public static void main(String[] args) {
21+
OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
22+
String osName = operatingSystemMXBean.getName();
23+
String osVersion = operatingSystemMXBean.getVersion();
24+
int processors = operatingSystemMXBean.getAvailableProcessors();
25+
System.out.println(String.format("操作系统:%s,版本:%s,处理器:%d 个", osName, osVersion, processors));
26+
27+
CompilationMXBean compilationMXBean = ManagementFactory.getCompilationMXBean();
28+
String compilationMXBeanName = compilationMXBean.getName();
29+
System.out.println("编译系统:" + compilationMXBeanName);
30+
31+
MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean();
32+
MemoryUsage heapMemoryUsage = memoryMXBean.getHeapMemoryUsage();
33+
long max = heapMemoryUsage.getMax();
34+
long used = heapMemoryUsage.getUsed();
35+
System.out.println(String.format("使用内存:%dMB/%dMB", used / 1024 / 1024, max / 1024 / 1024));
36+
37+
List<GarbageCollectorMXBean> gcMXBeans = ManagementFactory.getGarbageCollectorMXBeans();
38+
String gcNames = gcMXBeans.stream()
39+
.map(MemoryManagerMXBean::getName)
40+
.collect(Collectors.joining(","));
41+
System.out.println("垃圾收集器:" + gcNames);
42+
}
43+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.wdbyte.jmx;
2+
3+
/**
4+
* @author https://www.wdbyte.com
5+
*/
6+
public class MyMemory implements MyMemoryMBean {
7+
8+
private long total;
9+
private long used;
10+
11+
@Override
12+
public long getTotal() {
13+
return total;
14+
}
15+
16+
@Override
17+
public void setTotal(long total) {
18+
this.total = total;
19+
}
20+
21+
@Override
22+
public long getUsed() {
23+
return used;
24+
}
25+
26+
@Override
27+
public void setUsed(long used) {
28+
this.used = used;
29+
}
30+
31+
@Override
32+
public String doMemoryInfo() {
33+
return String.format("使用内存: %dMB/%dMB", used, total);
34+
}
35+
36+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.wdbyte.jmx;
2+
3+
/**
4+
* @author https://www.wdbyte.com
5+
*/
6+
public interface MyMemoryMBean {
7+
8+
long getTotal();
9+
10+
void setTotal(long total);
11+
12+
long getUsed();
13+
14+
void setUsed(long used);
15+
16+
String doMemoryInfo();
17+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.wdbyte.jmx;
2+
3+
import java.lang.management.ManagementFactory;
4+
5+
import javax.management.InstanceAlreadyExistsException;
6+
import javax.management.MBeanRegistrationException;
7+
import javax.management.MBeanServer;
8+
import javax.management.MalformedObjectNameException;
9+
import javax.management.NotCompliantMBeanException;
10+
import javax.management.ObjectName;
11+
12+
/**
13+
* @author https://www.wdbyte.com
14+
*/
15+
public class MyMemoryManagement {
16+
17+
public static void main(String[] args) throws MalformedObjectNameException, NotCompliantMBeanException,
18+
InstanceAlreadyExistsException, MBeanRegistrationException, InterruptedException {
19+
// 获取 MBean Server
20+
MBeanServer platformMBeanServer = ManagementFactory.getPlatformMBeanServer();
21+
MyMemory myMemory = new MyMemory();
22+
myMemory.setTotal(100L);
23+
myMemory.setUsed(20L);
24+
// 注册
25+
ObjectName objectName = new ObjectName("com.wdbyte.jmx:type=myMemory");
26+
platformMBeanServer.registerMBean(myMemory, objectName);
27+
28+
while (true) {
29+
// 防止进行退出
30+
Thread.sleep(3000);
31+
System.out.println(myMemory.doMemoryInfo());
32+
}
33+
}
34+
}

0 commit comments

Comments
 (0)