有什么方法可以让我在使用Java的机器中找到可用或可用的内存?
需要这个细节,这样我就可以相应地启动我的JVM。
有 允许获取数字的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);
}
}