下载依赖包:
//sigar
compile group: 'org.fusesource', name: 'sigar', version: '1.6.4'
文件下载地址:
链接: https://pan.baidu.com/s/137_D7OSC8oXo4gseHwEoUw
提取码: ajn7
相关文件在:hyperic-sigar-1.6.4\sigar-bin\lib目录下。
windows环境:
在jdk目录的bin下面添加:sigar-amd64-winnt.dll,sigar-x86-winnt.dll文件
文件下载目录
linux环境:
首先可以自己在linux环境下写一个测试代码,获取java.library.path的相关信息。代码如下
public class Hello{
public static void main(String[] args){
System.out.print(System.getProperty("java.library.path"));
}
}
输出结果如下:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib 编译运行输出结果中,找到第二个文件目录:如/usr/lib64,在此文件夹下面添加:libsigar-amd64-linux.so(针对64位的操作系统),或者libsigar-x86-linux.so(针对32位的操作系统)文件.如果访问权限不够,还需要sudo chmod 744修改libsigar-amd64-linux.so文件权限。
测试代码:
import java.lang.management.ManagementFactory;
import com.sun.management.OperatingSystemMXBean;
import org.hyperic.sigar.*;
import java.util.Properties;
/**
* @Author: huangjie
* @Description :
* @Date: Created in 11:22 2018/9/8
* @Modified By:*/
public class Test {
public static void main(String[] args) throws SigarException {
Properties props = System.getProperties();
Sigar sigar = new Sigar();
SysInfo sysInfo = new SysInfo();
CpuPerc cpuCerc;
Mem mem;
OperatingSystem OS ;
OS = OperatingSystem.getInstance();
cpuCerc = sigar.getCpuPerc();
mem = sigar.getMem();
System.out.println(System.getProperty("java.library.path"));
System.out.println(props.getProperty("os.name")+" "+OS.getDescription());
System.out.println("<br>总使用率: "
+ String.format("%.2f ", cpuCerc.getCombined() * 100)
+ "%" + "<br>用户使用率(user): "
+ String.format("%.2f ", cpuCerc.getUser() * 100) + "%"
+ "<br>系统使用率(sys): "
+ String.format("%.2f ", cpuCerc.getSys() * 100) + "%"
+ "<br>当前空闲率(idle): "
+ String.format("%.2f ", cpuCerc.getIdle() * 100) + "%");
System.out.println("<br>内存总量:" + mem.getTotal() / 1024 / 1024
+ "M" + "<br>已使用内存:" + mem.getUsed() / 1024 / 1024
+ "M" + "<br>剩余内存:" + mem.getFree() / 1024 / 1024 + "M");
System.out.println(getMemery());
}
public static String getMemery() {
OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory
.getOperatingSystemMXBean();
// 总的物理内存+虚拟内存
long totalvirtualMemory = osmxb.getTotalSwapSpaceSize();
// 剩余的物理内存
long freePhysicalMemorySize = osmxb.getFreePhysicalMemorySize();
Double compare = (Double) (1 - freePhysicalMemorySize * 1.0
/ totalvirtualMemory) * 100;
String str = "内存已使用:" + compare.intValue() + "%";
return str;
}
}
输出结果如图所示:
上述操作可防止:java.lang.UnsatisfiedLinkError: org.hyperic.sigar.SysInfo.gather(Lorg/hyperic/sigar/Sigar;)V异常的发生。