gpt4 book ai didi

java - 在 Java 9 中查询交换空间

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:05:38 26 4
gpt4 key购买 nike

由于我使用的 sigar 库版本中存在错误(返回虚假的交换值),我尝试使用 com.sun.management.OperatingSystemMXBean 代替。这工作正常并给了我想要的结果(在 Windows 上)。

Class<?> sunMxBeanClass = Class.forName("com.sun.management.OperatingSystemMXBean");
sunMxBeanInstance = sunMxBeanClass.cast(ManagementFactory.getOperatingSystemMXBean());
getFreeSwapSpaceSize = getMethodWithName(sunMxBeanClass, "getFreeSwapSpaceSize");
getTotalSwapSpaceSize = getMethodWithName(sunMxBeanClass, "getTotalSwapSpaceSize");

然而,这与 java 9 不兼容。是否有另一种使用 java 查询交换文件/分区信息的方法? 我不想引入新的库或 sigar 版本

赞赏跨平台解决方案,但 Windows 就足够了:--)

谢谢

最佳答案

您可以尝试动态发现可用的 MX 属性:

public class ExtendedOsMxBeanAttr {
public static void main(String[] args) {
String[] attr={ "TotalPhysicalMemorySize", "FreePhysicalMemorySize",
"FreeSwapSpaceSize", "TotalSwapSpaceSize"};
OperatingSystemMXBean op = ManagementFactory.getOperatingSystemMXBean();
List<Attribute> al;
try {
al = ManagementFactory.getPlatformMBeanServer()
.getAttributes(op.getObjectName(), attr).asList();
} catch (InstanceNotFoundException | ReflectionException ex) {
Logger.getLogger(ExtendedOsMxBeanAttr.class.getName())
.log(Level.SEVERE, null, ex);
al = Collections.emptyList();
}
for(Attribute a: al) {
System.out.println(a.getName()+": "+a.getValue());
}
}
}

这里没有对 com.sun 类的依赖,甚至没有反射访问。

关于java - 在 Java 9 中查询交换空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48325706/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com