引入依賴
build.gradle
compile 'net.java.dev.jna:jna:5.6.0'
compile 'net.java.dev.jna:jna-platform:5.6.0'
compile 'com.github.oshi:oshi-core:5.3.7'
compile 'cn.hutool:hutool-all:5.5.6'
mvaen
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.6.0</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna-platform</artifactId>
<version>5.6.0</version>
</dependency>
<dependency>
<groupId>com.github.oshi</groupId>
<artifactId>oshi-core</artifactId>
<version>5.3.7</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.5.6</version>
</dependency>
代碼
private String format(long size) {
if (size < 1024) {
return size + "B";
} else {
size = size / 1024;
}
if (size < 1024) {
return size + "KB";
} else {
size = size / 1024;
}
if (size < 1024) {
size = size * 100;
return size / 100 + "." + size % 100 + "MB";
} else {
size = size * 100 / 1024;
return size / 100 + "." + size % 100 + "GB";
}
}
@Test
public void info() {
Console.log("======= 操作系統信息 ======");
OsInfo osInfo = SystemUtil.getOsInfo();
Console.log("操作系統:{}", osInfo.getName());
Console.log("系統版本:{}", osInfo.getVersion());
Console.log("系統架構:{}", osInfo.getArch());
Console.log("JVM總內存:{}", format(SystemUtil.getTotalMemory()));
Console.log("JVM剩餘內存:{}", format(SystemUtil.getFreeMemory()));
Console.log("======= java信息 ======");
JavaRuntimeInfo runtimeInfo = SystemUtil.getJavaRuntimeInfo();
Console.log("java版本:{}", runtimeInfo.getVersion());
Console.log("java架構:{}", runtimeInfo.getSunArchDataModel());
Console.log("java目錄:{}", runtimeInfo.getHomeDir());
SystemInfo systemInfo = new SystemInfo();
HardwareAbstractionLayer hardware = systemInfo.getHardware();
OperatingSystem operatingSystem = systemInfo.getOperatingSystem();
Console.log("======= CPU信息 ======");
CentralProcessor cpu = hardware.getProcessor();
CentralProcessor.ProcessorIdentifier cpuInfo = cpu.getProcessorIdentifier();
Console.log("cpu數量:{}", cpu.getPhysicalPackageCount());
Console.log("cpu核心數:{}", cpu.getPhysicalProcessorCount());
Console.log("cpu線程數:{}", cpu.getLogicalProcessorCount());
Console.log("cpuID:{}", cpuInfo.getProcessorID());
Console.log("cpu名稱:{}", cpuInfo.getName());
Console.log("cpu標識:{}", cpuInfo.getIdentifier());
Console.log("======= 主板信息 ======");
ComputerSystem computer = hardware.getComputerSystem();
Console.log("主板型號:{}", computer.getModel());
Console.log("主板序列號:{}", computer.getSerialNumber());
Console.log("======= 內存信息 ======");
GlobalMemory memory = hardware.getMemory();
Console.log("內存大小:{}", format(memory.getTotal()));
Console.log("可用內存:{}", format(memory.getAvailable()));
Console.log("==========");
List<PhysicalMemory> memoryList = memory.getPhysicalMemory();
memoryList.forEach((item) -> {
Console.log("內存型號:{}", item.getManufacturer());
Console.log("內存規格:{}", item.getMemoryType());
Console.log("內存主頻:{}", format(item.getClockSpeed()));
Console.log("內存大小:{}", format(item.getCapacity()));
Console.log("==========");
});
Console.log("======= 物理磁盤信息 ======");
List<HWDiskStore> diskList = hardware.getDiskStores();
diskList.forEach((disk) -> {
Console.log("名稱:{}", disk.getName());
Console.log("型號:{}", disk.getModel());
Console.log("序號:{}", disk.getSerial());
Console.log("大小:{}", format(disk.getSize()));
Console.log("==========");
});
Console.log("======= 邏輯磁盤信息 ======");
FileSystem fileSystem = operatingSystem.getFileSystem();
List<OSFileStore> fileList = fileSystem.getFileStores(true);
fileList.forEach((file) -> {
Console.log("名稱:{}", file.getName());
Console.log("UUID:{}", file.getUUID());
Console.log("盤符:{}", file.getMount());
Console.log("文件類型:{}", file.getType());
Console.log("總大小:{}", format(file.getTotalSpace()));
Console.log("剩餘大小:{}", format(file.getUsableSpace()));
Console.log("==========");
});
}
輸出
======= 操作系統信息 ======
操作系統:Windows 10
系統版本:10.0
系統架構:amd64
JVM總內存:243.0MB
JVM剩餘內存:189.0MB
======= java信息 ======
java版本:1.8.0_221-b11
java架構:64
java目錄:C:\app\Java\x64\jdk1.8.0_221\jre
======= CPU信息 ======
cpu數量:1
cpu核心數:4
cpu線程數:8
cpuID:BFEBFBFF000906E9
cpu名稱:Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
cpu標識:Intel64 Family 6 Model 158 Stepping 9
======= 主板信息 ======
主板型號:Inspiron 15 7000 Gaming
主板序列號:58D9Y32
======= 內存信息 ======
內存大小:15.86GB
可用內存:5.18GB
==========
內存型號:Samsung
內存規格:DDR4
內存主頻:2.23GB
內存大小:8.0GB
==========
內存型號:SK Hynix
內存規格:DDR4
內存主頻:2.23GB
內存大小:8.0GB
==========
======= 物理磁盤信息 ======
19:22:14.526 [main] DEBUG oshi.util.platform.windows.PerfCounterQuery - Localized PhysicalDisk to PhysicalDisk
名稱:\\.\PHYSICALDRIVE0
型號:KINGSTON SUV500M8240G (標準磁盤驅動器)
序號:50026B768258ACA9
大小:223.56GB
==========
名稱:\\.\PHYSICALDRIVE1
型號:TOSHIBA MQ01ABD100 (標準磁盤驅動器)
序號: 87C3S6KZS
大小:931.51GB
==========
======= 邏輯磁盤信息 ======
名稱:本地固定磁盤 (C:)
UUID:e4769774-92f9-431e-ad1d-96963d9d03bc
盤符:C:\
文件類型:NTFS
總大小:221.37GB
剩餘大小:88.8GB
==========
名稱:本地固定磁盤 (D:)
UUID:81c881c4-76ff-48af-b0c1-2070f753310f
盤符:D:\
文件類型:NTFS
總大小:300.0GB
剩餘大小:218.97GB
==========
名稱:本地固定磁盤 (E:)
UUID:a689f086-7265-4c3e-b622-8a641787dd5e
盤符:E:\
文件類型:NTFS
總大小:300.72GB
剩餘大小:136.71GB
==========
名稱:本地固定磁盤 (F:)
UUID:8c126ad0-bf59-457d-8c2f-e3248e03e9f7
盤符:F:\
文件類型:NTFS
總大小:330.65GB
剩餘大小:213.28GB
==========