今天因为老师跟的项目要获取当前系统或者说当前硬件机器的磁盘、CPU和内存的情况,使用到了这个Sigar,虽然还不了解具体情况是什么样子,但是这里先记录一下被安排解决的一个小问题,留待以后查阅。
博主的电脑是Windows 10x64的,所以用到的是Sigar那个压缩包里面的sigar-amd64-winnt.dll、sigar-x86-winnt.dll和sigar-x86-winnt.lib三个文件(可能里面有不是匹配64位机的,但是我一股脑全拉进去了,这三个都是针对windows系统的就对了)。博主要解决的问题是,运行main程序方法去测试获取磁盘、CPU、内存和网络情况之前,需要将这三个文件放到相对应的环境库目录下,程序才能正常运行。感兴趣的同学可以自己试,下面先把获取方法代码贴出来(Sigar压缩包官网有,可以自己下)。
这是执行的main方法:
public static void main(String[] args) {
try {
// System信息,从jvm获取
property();
System.out.println("----------------------------------");
// cpu信息
cpu();
System.out.println("----------------------------------");
// 内存信息
memory();
System.out.println("----------------------------------");
// 操作系统信息
os();
System.out.println("----------------------------------");
// 用户信息
who();
System.out.println("----------------------------------");
// 文件系统信息
file();
System.out.println("----------------------------------");
// 网络信息
net();
System.out.println("----------------------------------");
// 以太网信息
ethernet();
System.out.println("----------------------------------");
} catch (Exception e1) {
e1.printStackTrace();
}
}
下面是对应的每个方法的代码块,其实都是网上拉下来的,这里为了完整性,一并给出。
private static void property() throws UnknownHostException {
Runtime r = Runtime.getRuntime();
Properties props = System.getProperties();
InetAddress addr;
addr = InetAddress.getLocalHost();
String ip = addr.getHostAddress();
Map<String, String> map = System.getenv();
String userName = map.get("USERNAME");// 获取用户名
String computerName = map.get("COMPUTERNAME");// 获取计算机名
String userDomain = map.get("USERDOMAIN");// 获取计算机域名
System.out.println("用户名: " + userName);
System.out.println("计算机名: " + computerName);
System.out.println("计算机域名: " + userDomain);
System.out.println("本地ip地址: " + ip);
System.out.println("本地主机名: " + addr.getHostName());
System.out.println("JVM可以使用的总内存: " + r.totalMemory());
System.out.println("JVM可以使用的剩余内存: " + r.freeMemory());
System.out.println("JVM可以使用的处理器个数: " + r.availableProcessors());
System.out.println("Java的运行环境版本: " + props.getProperty("java.version"));
System.out.println("Java的运行环境供应商: " + props.getProperty("java.vendor"));
System.out.println("Java供应商的URL: " + props.getProperty("java.vendor.url"));
System.out.println("Java的安装路径: " + props.getProperty("java.home"));
System.out.println("Java的虚拟机规范版本: " + props.getProperty("java.vm.specification