操作系统如何在java程序中获取操作系统属性?
嗨,我需要获得有关操作系统物理内存和cpu使用情况的详细信息以及其他详细信息。我不能为已经可用的API支付任何金额。我可以使用任何免费的API,也可以编写自己的API
我需要下图中的所有细节
在上图中,我必须得到以下值
- 总数
- 缓存
- 可用
- 免费的
像这样我需要的所有价值观。 为此,我搜索了很多,得到了一些提示。我使用下面的代码得到了第一个值—物理内存总值
public class MBeanServerDemo {
public MBeanServerDemo() {
super();
}
public static void main(String... a) throws Exception {
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
Object attribute =
mBeanServer.getAttribute(new ObjectName("java.lang", "type", "OperatingSystem"), "TotalPhysicalMemorySize");
long l = Long.parseLong(attribute.toString());
System.out.println("Total memory: " + (l / (1024*1024)));
}
}
以下是上述程序的输出
Total memory: 3293
请帮帮我。我如何做到这一点
编辑:我在谷歌上搜索了很多解决方案,在stackoverflow中找到了很多帖子。通用域名格式。但在所有这些帖子中,人们只讨论了记忆的细节。我需要有关内核(分页和非分页)等的所有细节。请参阅这篇文章
非常感谢
# 1 楼答案
在Windows上使用JINDOP进行此任务。
要获取以MB为单位的RAM总量,请执行以下操作:
要获取CPU总量,请执行以下操作:
使用这些函数作为模板,您可以通过MSDN网站查询其他属性/函数,以查询其他值
# 2 楼答案
请看下面的API:
SIGAR API-系统信息收集程序和报告程序 https://support.hyperic.com/display/SIGAR/Home
用法的一些例子:http://www.programcreek.com/java-api-examples/index.php?api=org.hyperic.sigar.Sigar
# 3 楼答案
您可以使用JNA,它提供了对特定于平台的API(如win32)的大量访问。动态链接库
JNA on Github