java代码,用端口号port获得MemoryPoolMXBean。并输出他GC的伊甸区、幸存者区、老年代的初始空间 、已使用空间、已分配空间最大空间
时间: 2023-08-02 19:12:13 浏览: 50
以下是使用Java代码获取MemoryPoolMXBean信息并输出的示例:
```java
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryPoolMXBean;
public class MemoryPoolMXBeanDemo {
public static void main(String[] args) {
int port = 8080; // 设置端口号
String jmxUrl = "service:jmx:rmi:///jndi/rmi://localhost:" + port + "/jmxrmi";
try {
// 使用JMX连接到本地JVM
JMXConnector connector = JMXConnectorFactory.connect(new JMXServiceURL(jmxUrl));
MBeanServerConnection mBeanServerConnection = connector.getMBeanServerConnection();
// 获取所有MemoryPoolMXBean
List<MemoryPoolMXBean> memoryPoolMXBeans = ManagementFactory.getMemoryPoolMXBeans();
// 遍历每个MemoryPoolMXBean并输出相关信息
for (MemoryPoolMXBean memoryPoolMXBean : memoryPoolMXBeans) {
System.out.println("Memory pool name: " + memoryPoolMXBean.getName());
System.out.println("GC names: " + Arrays.toString(memoryPoolMXBean.getGarbageCollectorNames()));
// 获取伊甸区、幸存者区、老年代的初始空间、已使用空间、已分配空间和最大空间
MemoryUsage edenSpaceMemoryUsage = memoryPoolMXBean.getUsage();
MemoryUsage survivorSpaceMemoryUsage = memoryPoolMXBean.getUsage();
MemoryUsage oldGenMemoryUsage = memoryPoolMXBean.getUsage();
System.out.println("Eden space init: " + edenSpaceMemoryUsage.getInit());
System.out.println("Eden space used: " + edenSpaceMemoryUsage.getUsed());
System.out.println("Eden space committed: " + edenSpaceMemoryUsage.getCommitted());
System.out.println("Eden space max: " + edenSpaceMemoryUsage.getMax());
System.out.println("Survivor space init: " + survivorSpaceMemoryUsage.getInit());
System.out.println("Survivor space used: " + survivorSpaceMemoryUsage.getUsed());
System.out.println("Survivor space committed: " + survivorSpaceMemoryUsage.getCommitted());
System.out.println("Survivor space max: " + survivorSpaceMemoryUsage.getMax());
System.out.println("Old gen init: " + oldGenMemoryUsage.getInit());
System.out.println("Old gen used: " + oldGenMemoryUsage.getUsed());
System.out.println("Old gen committed: " + oldGenMemoryUsage.getCommitted());
System.out.println("Old gen max: " + oldGenMemoryUsage.getMax());
}
// 关闭JMX连接
connector.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在该示例中,我们首先通过设置端口号来连接到本地JVM。然后,我们获取所有MemoryPoolMXBean,并遍历每个MemoryPoolMXBean以获取伊甸区、幸存者区、老年代的初始空间、已使用空间、已分配空间和最大空间,并输出这些信息。最后,我们关闭JMX连接。