机器的可用内存

问题描述 投票:0回答:2

有什么方法可以让我在使用Java的机器中找到可用或可用的内存?

需要这个细节,这样我就可以相应地启动我的JVM。

java memory memory-management
2个回答
2
投票

允许获取数字的API但它并不是Java 8中官方API的一部分,而是依赖于一个可选的模块。jdk.management在JDK 11中,你可以使用动态访问来避免对非官方API的直接代码依赖。

你可以使用动态访问来避免对非官方API的直接代码依赖。在常见的实现中,即OpenJDK和Oracle的JDK发行版中,将可以使用。

import java.lang.management.ManagementFactory;
import javax.management.*;

public class Memory {
    public static void main(String[] args) throws JMException {
        MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
        ObjectName objectName = new ObjectName("java.lang:type=OperatingSystem");

        Long free = (Long)mBeanServer.getAttribute(objectName, "FreePhysicalMemorySize");
        Long total= (Long)mBeanServer.getAttribute(objectName, "TotalPhysicalMemorySize");

        final double gb = 0x1p-30;

        System.out.printf("%.2f GB of %.2f GB free%n", free * gb, total * gb);

        total = (Long)mBeanServer.getAttribute(objectName, "TotalSwapSpaceSize");
        free  = (Long)mBeanServer.getAttribute(objectName, "FreeSwapSpaceSize");

        System.out.printf("%.2f GB of %.2f GB swap free%n", free * gb, total * gb);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.