代码
import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import oshi.SystemInfo; import oshi.hardware.CentralProcessor; import oshi.hardware.CentralProcessor.TickType; import oshi.hardware.GlobalMemory; import oshi.hardware.HardwareAbstractionLayer; import oshi.util.FormatUtil; import oshi.util.Util; import java.util.Arrays; /** * os information test */ public class OshiTest { private static Logger logger = LoggerFactory.getLogger(OshiTest.class); @Test public void test() { SystemInfo si = new SystemInfo(); HardwareAbstractionLayer hal = si.getHardware(); logger.info("Checking Memory..."); printMemory(hal.getMemory()); logger.info("Checking CPU..."); printCpu(hal.getProcessor()); } private static void printMemory(GlobalMemory memory) { logger.info("memory avail:{} MB" , memory.getAvailable() / 1024 / 1024 );//memory avail:6863 MB logger.info("memory total:{} MB" , memory.getTotal() / 1024 / 1024 );//memory total:16384 MB } private static void printCpu(CentralProcessor processor) { logger.info(String.format("CPU load: %.1f%% (OS MXBean)%n", processor.getSystemCpuLoad() * 100));//CPU load: 24.9% (OS MXBean) logger.info("CPU load averages : {}", processor.getSystemLoadAverage());//CPU load averages : 1.5234375 logger.info("Uptime: " + FormatUtil.formatElapsedSecs(processor.getSystemUptime())); logger.info("Context Switches/Interrupts: " + processor.getContextSwitches() + " / " + processor.getInterrupts()); long[] prevTicks = processor.getSystemCpuLoadTicks(); logger.info("CPU, IOWait, and IRQ ticks @ 0 sec:" + Arrays.toString(prevTicks)); //Wait a second... Util.sleep(1000); long[] ticks = processor.getSystemCpuLoadTicks(); logger.info("CPU, IOWait, and IRQ ticks @ 1 sec:" + Arrays.toString(ticks)); long user = ticks[TickType.USER.getIndex()] - prevTicks[TickType.USER.getIndex()]; long nice = ticks[TickType.NICE.getIndex()] - prevTicks[TickType.NICE.getIndex()]; long sys = ticks[TickType.SYSTEM.getIndex()] - prevTicks[TickType.SYSTEM.getIndex()]; long idle = ticks[TickType.IDLE.getIndex()] - prevTicks[TickType.IDLE.getIndex()]; long iowait = ticks[TickType.IOWAIT.getIndex()] - prevTicks[TickType.IOWAIT.getIndex()]; long irq = ticks[TickType.IRQ.getIndex()] - prevTicks[TickType.IRQ.getIndex()]; long softirq = ticks[TickType.SOFTIRQ.getIndex()] - prevTicks[TickType.SOFTIRQ.getIndex()]; long steal = ticks[TickType.STEAL.getIndex()] - prevTicks[TickType.STEAL.getIndex()]; long totalCpu = user + nice + sys + idle + iowait + irq + softirq + steal; logger.info(String.format( "User: %.1f%% Nice: %.1f%% System: %.1f%% Idle: %.1f%% IOwait: %.1f%% IRQ: %.1f%% SoftIRQ: %.1f%% Steal: %.1f%%%n", 100d * user / totalCpu, 100d * nice / totalCpu, 100d * sys / totalCpu, 100d * idle / totalCpu, 100d * iowait / totalCpu, 100d * irq / totalCpu, 100d * softirq / totalCpu, 100d * steal / totalCpu)); logger.info(String.format("CPU load: %.1f%% (counting ticks)%n", processor.getSystemCpuLoadBetweenTicks() * 100)); double[] loadAverage = processor.getSystemLoadAverage(3); logger.info("CPU load averages:" + (loadAverage[0] < 0 ? " N/A" : String.format(" %.2f", loadAverage[0])) + (loadAverage[1] < 0 ? " N/A" : String.format(" %.2f", loadAverage[1])) + (loadAverage[2] < 0 ? " N/A" : String.format(" %.2f", loadAverage[2]))); // per core CPU StringBuilder procCpu = new StringBuilder("CPU load per processor:"); double[] load = processor.getProcessorCpuLoadBetweenTicks(); for (double avg : load) { procCpu.append(String.format(" %.1f%%", avg * 100)); } logger.info(procCpu.toString()); } }
结果
16:03:08.573 [main] INFO org.apache.dolphinscheduler.common.os.OshiTest - Checking Memory...
16:03:10.592 [main] INFO org.apache.dolphinscheduler.common.os.OshiTest - memory avail:155 MB
16:03:10.594 [main] INFO org.apache.dolphinscheduler.common.os.OshiTest - memory total:4095 MB
16:03:10.594 [main] INFO org.apache.dolphinscheduler.common.os.OshiTest - Checking CPU...
16:03:10.772 [main] DEBUG oshi.hardware.common.AbstractCentralProcessor - Oracle MXBean detected.
16:03:12.319 [main] DEBUG oshi.hardware.platform.windows.WindowsCentralProcessor - Initialized Processor
16:03:12.322 [main] INFO org.apache.dolphinscheduler.common.os.OshiTest - CPU load: 41.0% (OS MXBean)
16:03:12.322 [main] INFO org.apache.dolphinscheduler.common.os.OshiTest - CPU load averages : -1.0
16:03:12.326 [main] INFO org.apache.dolphinscheduler.common.os.OshiTest - Uptime: 1 days, 20:39:54
16:03:12.328 [main] INFO org.apache.dolphinscheduler.common.os.OshiTest - Context Switches/Interrupts: 1714488866 / 570600239
16:03:12.330 [main] INFO org.apache.dolphinscheduler.common.os.OshiTest - CPU, IOWait, and IRQ ticks @ 0 sec:[37287359, 0, 19608289, 234918099, 0, 520263, 600050, 0]
16:03:13.332 [main] INFO org.apache.dolphinscheduler.common.os.OshiTest - CPU, IOWait, and IRQ ticks @ 1 sec:[37287421, 0, 19608313, 234920002, 0, 520263, 600057, 0]
16:03:13.333 [main] INFO org.apache.dolphinscheduler.common.os.OshiTest - User: 3.1% Nice: 0.0% System: 1.2% Idle: 95.3% IOwait: 0.0% IRQ: 0.0% SoftIRQ: 0.4% Steal: 0.0%
16:03:13.333 [main] INFO org.apache.dolphinscheduler.common.os.OshiTest - CPU load: 19.8% (counting ticks)
16:03:13.333 [main] INFO org.apache.dolphinscheduler.common.os.OshiTest - CPU load averages: N/A N/A N/A
16:03:13.337 [main] INFO org.apache.dolphinscheduler.common.os.OshiTest - CPU load per processor: 21.3% 18.3%
相关推荐
通过Java程序获取Windows/Linux系统的CPU信息、内存信息、硬盘信息、网络信息、操作系统信息等。
前段时间摸索在Java中怎么获取系统信息包括cpu、内存、硬盘信息等,刚开始使用Java自带的包进行获取,但这样获取的内存信息不够准确并且容易出现找不到相应包等错误,所以后面使用sigar插件进行获取。下面列举出...
利用 java 获取电脑的cpu信息、内存信息
Java获取系统信息(cpu,内存,硬盘,进程等)的相关方法.pdf
用java取得linux系统cpu、内存的实时信息
java使用siger 获取服务器硬件信息(CPU 内存 网络 io等)
Java获取计算机的CPU使用率和内存等一系列数据的时候,给人的第一感觉就是要用动态链接库,其实Java也完全可以使用的,所以就简单的写了一下,基本信息都能获取的到,还就CPU使用率做了一个仪表图表
主要介绍了Java实现获取cpu、内存、硬盘、网络等信息的方法,涉及java使用第三方jar包针对本机硬件的cpu、内存、硬盘、网络信息等的读取相关操作技巧,需要的朋友可以参考下
java 获取计算机cpu利用率和内存使用信息,需要的自己下载测试吧。
该文档中详细描述了在java开发中如何获取系统中内存、CPU相关信息,非常实用。
java获取系统信息(cpu,内存,硬盘)方法及jar包。还可以直接读出ip地址及使用的网卡。
Java获取系统信息(cpu_内存_硬盘_进程等)的相关方法
java通过sigar获取进程的相关信息 ,包含各个进程的PID、名称、CPU使用率、所占内存大小等
linux获取cpu、磁盘、内存占用率代码
主要介绍了java获取服务器基本信息的方法,涉及java获取系统CPU、内存及操作系统等相关信息的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
javasysmon, 在Java中,管理操作系统进程并获取cpu和内存统计信息 JavaSysMonJavaSysMon旨在提供独立于OS处理操作系统的方法,并获取实时系统性能信息,比如CPU和内存使用,作为一个单一的jar 文件。 它是用C 和Java...
获取CPU,内存,硬盘使用情况
通过jmx可以监控vm内存使用,系统内存使用等 ,特点是通过window和linux命令获得CPU使用率。
DeviceInfoManage类用于获取系统的内存,CPU的信息,以及状态栏的高度 import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io....