-
2021-02-26 09:50:02
展开全部
1、确定当前系统安装的jdk是1.6版本以上
2、windows系统中有获取cpu使用率的可执行文636f70793231313335323631343130323136353331333337626230件exe,只要在java中获取该文件的执行路径,通过Java调用即可。
3、获取操作系统可执行文件目录procCmd
4、调用java的Runtime.getRuntime().exec执行cmd应用程序
5、利用java中sleep来计算睡眠前后cpu的忙碌时间与空闲时间,因为sleep不会释放系统资源
6、根据忙碌时间占总时间的比例来计算cpu使用率
示例:private double getCpuRatioForWindows() {
try {
String procCmd = System.getenv("windir")
+ "//system32//wbem//wmic.exe process get Caption,CommandLine,"
+ "KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount";
// 取进程信息
long[] c0 = readCpu(Runtime.getRuntime().exec(procCmd));
Thread.sleep(CPUTIME);
long[] c1 = readCpu(Runtime.getRuntime().exec(procCmd));
if (c0 != null && c1 != null) {
long idletime = c1[0] - c0[0];
long busytime = c1[1] - c0[1];
return Double.valueOf(
PERCENT * (busytime) / (busytime + idletime))
.doubleValue();
} else {
return 0.0;
}
} catch (Exception ex) {
ex.printStackTrace();
return 0.0;
}
}
更多相关内容 -
java 获取cpu 使用率
2021-03-06 04:03:26} } /** * 获得CPU使用率. * @return 返回cpu使用率 * @author GuoHuang */ private double getCpuRatioForWindows() { try { String procCmd = System.getenv("windir") + "\\system32\\wbem\\wmic.exe process ...private static double getCpuRateForLinux(){
InputStream is = null;
InputStreamReader isr = null;
BufferedReader brStat = null;
StringTokenizer tokenStat = null;
try{
System.out.println("Get usage rate of CUP , linux version: "+linuxVersion);
Process process = Runtime.getRuntime().exec("top -b -n 1");
is = process.getInputStream();
isr = new InputStreamReader(is);
brStat = new BufferedReader(isr);
if(linuxVersion.equals("2.4")){
brStat.readLine();
brStat.readLine();
brStat.readLine();
brStat.readLine();
tokenStat = new StringTokenizer(brStat.readLine());
tokenStat.nextToken();
tokenStat.nextToken();
String user = tokenStat.nextToken();
tokenStat.nextToken();
String system = tokenStat.nextToken();
tokenStat.nextToken();
String nice = tokenStat.nextToken();
System.out.println(user+" , "+system+" , "+nice);
user = user.substring(0,user.indexOf("%"));
system = system.substring(0,system.indexOf("%"));
nice = nice.substring(0,nice.indexOf("%"));
float userUsage = new Float(user).floatValue();
float systemUsage = new Float(system).floatValue();
float niceUsage = new Float(nice).floatValue();
return (userUsage+systemUsage+niceUsage)/100;
}else{
brStat.readLine();
brStat.readLine();
tokenStat = new StringTokenizer(brStat.readLine());
tokenStat.nextToken();
tokenStat.nextToken();
tokenStat.nextToken();
tokenStat.nextToken();
tokenStat.nextToken();
tokenStat.nextToken();
tokenStat.nextToken();
String cpuUsage = tokenStat.nextToken();
System.out.println("CPU idle : "+cpuUsage);
Float usage = new Float(cpuUsage.substring(0,cpuUsage.indexOf("%")));
return (1-usage.floatValue()/100);
}
} catch(IOException ioe){
System.out.println(ioe.getMessage());
freeResource(is, isr, brStat);
return 1;
} finally{
freeResource(is, isr, brStat);
}
}
private static void freeResource(InputStream is, InputStreamReader isr, BufferedReader br){
try{
if(is!=null)
is.close();
if(isr!=null)
isr.close();
if(br!=null)
br.close();
}catch(IOException ioe){
System.out.println(ioe.getMessage());
}
}
/**
* 获得CPU使用率.
* @return 返回cpu使用率
* @author GuoHuang
*/
private double getCpuRatioForWindows() {
try {
String procCmd = System.getenv("windir")
+ "\\system32\\wbem\\wmic.exe process get Caption,CommandLine,"
+ "KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount";
// 取进程信息
long[] c0 = readCpu(Runtime.getRuntime().exec(procCmd));
Thread.sleep(CPUTIME);
long[] c1 = readCpu(Runtime.getRuntime().exec(procCmd));
if (c0 != null && c1 != null) {
long idletime = c1[0] - c0[0];
long busytime = c1[1] - c0[1];
return Double.valueOf(
PERCENT * (busytime) / (busytime + idletime))
.doubleValue();
} else {
return 0.0;
}
} catch (Exception ex) {
ex.printStackTrace();
return 0.0;
}
}
/**
* 读取CPU信息.
* @param proc
* @return
* @author GuoHuang
*/
private long[] readCpu(final Process proc) {
long[] retn = new long[2];
try {
proc.getOutputStream().close();
InputStreamReader ir = new InputStreamReader(proc.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line = input.readLine();
if (line == null || line.length() < FAULTLENGTH) {
return null;
}
int capidx = line.indexOf("Caption");
int cmdidx = line.indexOf("CommandLine");
int rocidx = line.indexOf("ReadOperationCount");
int umtidx = line.indexOf("UserModeTime");
int kmtidx = line.indexOf("KernelModeTime");
int wocidx = line.indexOf("WriteOperationCount");
long idletime = 0;
long kneltime = 0;
long usertime = 0;
while ((line = input.readLine()) != null) {
if (line.length() < wocidx) {
continue;
}
// 字段出现顺序:Caption,CommandLine,KernelModeTime,ReadOperationCount,
// ThreadCount,UserModeTime,WriteOperation
String caption = Bytes.substring(line, capidx, cmdidx - 1)
.trim();
String cmd = Bytes.substring(line, cmdidx, kmtidx - 1).trim();
if (cmd.indexOf("wmic.exe") >= 0) {
continue;
}
// log.info("line="+line);
if (caption.equals("System Idle Process")
|| caption.equals("System")) {
idletime += Long.valueOf(
Bytes.substring(line, kmtidx, rocidx - 1).trim())
.longValue();
idletime += Long.valueOf(
Bytes.substring(line, umtidx, wocidx - 1).trim())
.longValue();
continue;
}
kneltime += Long.valueOf(
Bytes.substring(line, kmtidx, rocidx - 1).trim())
.longValue();
usertime += Long.valueOf(
Bytes.substring(line, umtidx, wocidx - 1).trim())
.longValue();
}
retn[0] = idletime;
retn[1] = kneltime + usertime;
return retn;
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
proc.getInputStream().close();
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
上面方法不行,下面的可以
String result = "";
try {
File file = File.createTempFile("tmp", ".vbs");
file.deleteOnExit();
FileWriter fw = new java.io.FileWriter(file);
String vbs ="Set objProc = GetObject(\"winmgmts:\\\\.\\root\\cimv2:win32_processor='cpu0'\")\n" +
"WScript.Echo \"CPU Load Percentage: \"& chr(13) & chr(10) & Round(objProc.LoadPercentage,2) & \"%\"";
fw.write(vbs);
fw.close();
Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath());
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = input.readLine()) != null) {
result += line;
}
input.close();
file.delete();
} catch (Exception e) {
e.fillInStackTrace();
}
if (result.trim().length() < 1 || result == null) {
}else{
System.out.println(result.trim());
}
-
java查看CPU使用率
2021-02-12 16:09:19import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.LineNumberReader;import java.util.StringTokenize...package testSysinfo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.util.StringTokenizer;
public class CPU {
private static final int CPUTIME = 30;
private static final int PERCENT = 100;
private static final int FAULTLENGTH = 10;
private static String linuxVersion = null;
public double getCpuRatio() {
// 操作系统
String osName = System.getProperty("os.name");
double cpuRatio = 0;
if (osName.toLowerCase().startsWith("windows")) {
cpuRatio = this.getCpuRatioForWindows();
} else {
cpuRatio = this.getCpuRateForLinux();
}
return cpuRatio;
}
/**
* 获得当前的监控对象.
*
* @return 返回构造好的监控对象
*/
public MonitorInfoBean getMonitorInfoBean() throws Exception {
// 操作系统
String osName = System.getProperty("os.name");
// 获得线程总数
ThreadGroup parentThread;
for (parentThread = Thread.currentThread().getThreadGroup(); parentThread
.getParent() != null; parentThread = parentThread.getParent())
;
int totalThread = parentThread.activeCount();
double cpuRatio = 0;
if (osName.toLowerCase().startsWith("windows")) {
cpuRatio = this.getCpuRatioForWindows();
} else {
cpuRatio = this.getCpuRateForLinux();
}
// 构造返回对象
MonitorInfoBean infoBean = new MonitorInfoBean();
infoBean.setTotalThread(totalThread);
infoBean.setCpuRatio(cpuRatio);
return infoBean;
}
private static double getCpuRateForLinux() {
InputStream is = null;
InputStreamReader isr = null;
BufferedReader brStat = null;
StringTokenizer tokenStat = null;
try {
System.out.println("Get usage rate of CUP , linux version: "
+ linuxVersion);
Process process = Runtime.getRuntime().exec("top -b -n 1");
is = process.getInputStream();
isr = new InputStreamReader(is);
brStat = new BufferedReader(isr);
if (linuxVersion.equals("2.4")) {
brStat.readLine();
brStat.readLine();
brStat.readLine();
brStat.readLine();
tokenStat = new StringTokenizer(brStat.readLine());
tokenStat.nextToken();
tokenStat.nextToken();
String user = tokenStat.nextToken();
tokenStat.nextToken();
String system = tokenStat.nextToken();
tokenStat.nextToken();
String nice = tokenStat.nextToken();
System.out.println(user + " , " + system + " , " + nice);
user = user.substring(0, user.indexOf("%"));
system = system.substring(0, system.indexOf("%"));
nice = nice.substring(0, nice.indexOf("%"));
float userUsage = new Float(user).floatValue();
float systemUsage = new Float(system).floatValue();
float niceUsage = new Float(nice).floatValue();
return (userUsage + systemUsage + niceUsage) / 100;
} else {
brStat.readLine();
brStat.readLine();
tokenStat = new StringTokenizer(brStat.readLine());
tokenStat.nextToken();
tokenStat.nextToken();
tokenStat.nextToken();
tokenStat.nextToken();
tokenStat.nextToken();
tokenStat.nextToken();
tokenStat.nextToken();
String cpuUsage = tokenStat.nextToken();
System.out.println("CPU idle : " + cpuUsage);
Float usage = new Float(cpuUsage.substring(0, cpuUsage
.indexOf("%")));
return (1 - usage.floatValue() / 100);
}
} catch (IOException ioe) {
System.out.println(ioe.getMessage());
freeResource(is, isr, brStat);
return 1;
} finally {
freeResource(is, isr, brStat);
}
}
private static void freeResource(InputStream is, InputStreamReader isr,
BufferedReader br) {
try {
if (is != null)
is.close();
if (isr != null)
isr.close();
if (br != null)
br.close();
} catch (IOException ioe) {
System.out.println(ioe.getMessage());
}
}
/**
* 获得CPU使用率.
*
* @return 返回cpu使用率
*/
private double getCpuRatioForWindows() {
try {
String procCmd = System.getenv("windir")
+ "\\system32\\wbem\\wmic.exe process get Caption,CommandLine,"
+ "KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount";
// 取进程信息
long[] c0 = readCpu(Runtime.getRuntime().exec(procCmd));
Thread.sleep(CPUTIME);
long[] c1 = readCpu(Runtime.getRuntime().exec(procCmd));
if (c0 != null && c1 != null) {
long idletime = c1[0] - c0[0];
long busytime = c1[1] - c0[1];
return Double.valueOf(
PERCENT * (busytime) / (busytime + idletime))
.doubleValue();
} else {
return 0.0;
}
} catch (Exception ex) {
ex.printStackTrace();
return 0.0;
}
}
/**
*
* 读取CPU信息.
*
* @param proc
*/
private long[] readCpu(final Process proc) {
long[] retn = new long[2];
try {
proc.getOutputStream().close();
InputStreamReader ir = new InputStreamReader(proc.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line = input.readLine();
if (line == null || line.length() < FAULTLENGTH) {
return null;
}
int capidx = line.indexOf("Caption");
int cmdidx = line.indexOf("CommandLine");
int rocidx = line.indexOf("ReadOperationCount");
int umtidx = line.indexOf("UserModeTime");
int kmtidx = line.indexOf("KernelModeTime");
int wocidx = line.indexOf("WriteOperationCount");
long idletime = 0;
long kneltime = 0;
long usertime = 0;
while ((line = input.readLine()) != null) {
if (line.length() < wocidx) {
continue;
}
String caption = Bytes.substring(line, capidx, cmdidx - 1)
.trim();
String cmd = Bytes.substring(line, cmdidx, kmtidx - 1).trim();
if (cmd.indexOf("wmic.exe") >= 0) {
continue;
}
if (caption.equals("System Idle Process")
|| caption.equals("System")) {
idletime += Long.valueOf(
Bytes.substring(line, kmtidx, rocidx - 1).trim())
.longValue();
idletime += Long.valueOf(
Bytes.substring(line, umtidx, wocidx - 1).trim())
.longValue();
continue;
}
kneltime += Long.valueOf(
Bytes.substring(line, kmtidx, rocidx - 1).trim())
.longValue();
usertime += Long.valueOf(
Bytes.substring(line, umtidx, wocidx - 1).trim())
.longValue();
}
retn[0] = idletime;
retn[1] = kneltime + usertime;
return retn;
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
proc.getInputStream().close();
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
public static void main(String[] args) throws Exception {
CPU c = new CPU();
while(true){
System.out.println("cpu占有率1=" + c.getCpuRatio());
Thread.sleep(1000*2);
}
//System.out.println("cpu占有率2=" + c.getCpuRatioForWindows());
}
}
-
java程序中线程cpu使用率计算
2021-03-03 13:15:34cpu使用率如何计算计算使用率在上学那会就经常算,不过往往计算的是整个程序执行的时间段,现在突然要实时计算还真有点无奈,时间段如何选择是个问题。最后根据现有的程序做参考,那就是Linux的top命令源码。top命令...最近确实遇到题目上的刚需,也是花了一段时间来思考这个问题。
cpu使用率如何计算
计算使用率在上学那会就经常算,不过往往计算的是整个程序执行的时间段,现在突然要实时计算还真有点无奈,时间段如何选择是个问题。最后根据现有的程序做参考,那就是Linux的top命令源码。
top命令还是c程序,加之开源,我直接采取相同的时间段和计算方法。
先说说top是如何计算的,首先是从/proc/stat下读取cpu的使用时间,其次就是/proc/pid/stat获取进程的cpu时间,/proc/pid/task里获取这个进程里每个线程的id,然后继续从stat里查找cpu的使用时间。
线程cpu的利用率=线程运行的时间差(包括用户态+核心态+。。。。)/cpu运行时间之差(用户态+核心态+io+.....)
每隔3秒查询计算一次。
java实现过程
既然要获取cpu信息,我查询了很多方法,最终确定,java本身是做不到的(windows可没有/proc这样的文件给你查看),要借助c/c++来处理,原本我调用函数都查好了,就差写jni了,结果有人给我推荐了sigar。是就是基于本地库实现的,不过他已经把本地库这些都准备好了,基本每个平台都有,这样提供了很大的方便。接下来就是对这个库的使用过程了。
根据给出的参考例子和相关api文档。我们导入Jar包后需要继承SigarCommandBase这个类,我们一切的操作基本依靠父类的成员变量sigar
Cpu[] cpus = this.sigar.getCpuList();//获取cpu信息
long time = 0L;
for (int i = 0; i
time += cpus[i].getTotal();
}
return time;
先获取到cpu的信息,然后直接通过getTotal来得到当前cpu的运行时间,你可以用cpus获取到cpu在核心态运行时间等等,我最后尝试加起来和getTotal小有出入,差别不大,所以采用getTotal就可以了,这样就能获取cpu运行时间,第二次采集时也就知道时间差了。
接下来就是获取java线程信息这些了,依然还是算差值。
ThreadMXBean mx = ManagementFactory.getThreadMXBean();
long[] threadIds = mx.getAllThreadIds();
ThreadInfo[] threadInfos = mx.getThreadInfo(threadIds);
通过上面的代码就可以获取到现在进程里每个线程的信息。
long time = mx.getThreadCpuTime(threadId);
再通过getThreadCpuTime方法根据tid来获取到该线程在cpu上运行总时间,java文档上是这么写的:返回指定 ID 的线程的总 CPU 时间(以毫微秒为单位)。这里的单位是毫微秒的单位,要注意转换。
我保存线程信息是用一个map,主键是线程id,这里大家就需要稍微注意一下,我更建议是线程id+线程名字的手段来做主键,tid是标识唯一一个线程,我们假设a线程的id是34,如果a线程死掉之后,b线程启动,jvm会不会把34号标识给b线程呢,这里我不敢肯定,我感觉是会的。在linux的文件描述符也是唯一标识一个文件的,但是你一个文件关闭后,再开一个,肯定会占用到相同的描述符。所以我感觉线程的id也是如此,id是标识了唯一的线程,但是线程死掉,重新分配的话,这样也代码不必要的困扰。
剩下的就是算差值来计算使用率了,记得把动态库的位置加上,-Djava.library.path="位置",windows下可以加到path路径下,linux可以指定LD_LIBARARY_PATH。
-
Java肿么远程读取Linux的cpu使用率
2021-07-31 04:13:57Say(CPU load = + cpuLoad + %.); } } // constants used to select the performance counter. private const string CategoryName = Processor; private const string CounterName = % Processor Time; private ... -
Java获取Liunx服务器的cpu使用率、内存使用率以及磁盘使用率
2021-01-25 15:00:35本篇博客主要说明使用java程序如何获取liunx系统中的cpu使用率、内存使用率以及磁盘使用率,效果图如下: 1.创建三个实体类,分别为cpu、内存以及磁盘相关信息: cpu相关信息实体 package ... -
java应用cpu使用率过高问题排查
2018-07-18 23:59:591、先通过top命令找到消耗cpu很高的进程id假设是123 2、执行top -p 123单独监控该进程 3、在第2步的监控界面输入H,获取当前进程下的所有线程信息 4、找到消耗cpu特别高的线程编号,假设是123 5、... -
使用Sigar API获取JVM CPU使用率
2021-02-28 08:48:59小编典典我认为这取决于Sigar如何解释可用信息。可获得的信息(CPU使用时间)不是很频繁地更新,...您可以获取一段时间的CPU使用率,ProcCpu从它的开始和结束时刻开始分析两个s,并考虑CPU使用时间和ProcCpu(lastTime... -
java 通过服务器ip以及snmp协议读取cpu使用率,和内存使用率
2019-01-25 11:40:42java 通过服务器ip以及snmp协议读取cpu使用率,和内存使用率 **github地址:**https://github.com/Plumblumpb/snmp-demo.git 环境配置 window环境配置:... -
java获取cpu使用率/内存使用率/硬盘的使用率
2017-11-04 16:35:02import java.io.File; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.lang.management.ManagementFactory; import java.util.ArrayList; import java.util.List; import -
java如何获取实时cpu使用情况?
2021-02-28 16:22:00首先编写一个MonitorInfoBean类,用来装载监控的一些信息,包括物理内存、剩余的物理内存、已使用的物理内存、内存使用率等字段,该类的代码如下:package com.amgkaka.performance;/** *//*** 监视信息的JavaBean类... -
通过snmp的OID获取对方主机的内存利用率及CPU的使用率
2019-10-31 16:50:41通过snmp的OID获取对方主机的内存利用率及CPU的使用率 -
Java实现获取cpu、内存、硬盘、网络等信息的方法示例
2020-08-27 07:42:29主要介绍了Java实现获取cpu、内存、硬盘、网络等信息的方法,涉及java使用第三方jar包针对本机硬件的cpu、内存、硬盘、网络信息等的读取相关操作技巧,需要的朋友可以参考下 -
解决 java 程序中 CPU 占用率过高问题
2022-01-16 17:56:18文字版本 今天给大家分享的是 Java 程序 CPU 占用率过高的问题排查。一般遇到这种情况,项目上线后到了一定的时间会发现 CPU 的占用率过高,...使用 Linux 的 top 命令查找 CPU 占用率过高的 java 进程 ID 使用 java -
Linux下,java获取CPU使用率、内存使用率
2015-05-27 20:58:20/** * ...package com.test.cpumem; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.logging.Logger; /** * Linux下,ja -
java获得CPU使用率,系统内存,虚拟机内存等情况
2017-11-18 13:53:18以下是网上某博客代码,特点是通过window和linux命令获得CPU使用率。 public class MonitorInfoBean { /** 可使用内存. */ private long totalMemory; /** 剩余内存. */ private lon -
Java如何读取CPU的数据信息
2021-02-12 13:08:34展开全部java获取所有系统信息(CPU、内存、进程等)的代码:e5a48de588b63231313335323631343130323136353331333337613835import java.io.InputStreamReader;import java.io.LineNumberReader;import java.util.... -
Android获取CPU使用率的几种方式
2019-08-13 14:23:54最近需要做一个小功能获取Android设备的各种参数,包括内存、SD卡容量、CPU使用率等问题。发现其他几种都很好获得,有问题的是CPU的使用率。 android本质还是linux,因此可以用linux的方式获取某个进程的cpu使用率... -
window下,使用java sigar 获取磁盘使用率,cpu使用率以及内存使用情况等信息
2020-10-19 14:32:50一:首先需要下载jar包和相关文件 sigar-1.6.4.zip 如果想了解更多可以去 sigar官方主页 二:将压缩包解压,然后复制目录下的 hyperic-sigar-1.6.4\sigar-bin\lib\sigar-amd64-winnt.dll 文件。... -
Android系统CPU使用率获取(附java代码)
2017-03-18 20:02:41获取Android系统的CPU使用率的有效方法实现。 -
linux – 在shell脚本中获取CPU使用率?
2021-05-11 07:04:09我正在针对Java进程运行一些JMeter测试,以确定Web应用程序在负载下的响应速度(500个用户)....我想在服务器上收集Tomcat使用的CPU百分比的统计信息.我尝试在使用ps的shell脚本中执行此操作:PS_RESULTS=`ps -o pcp... -
聊聊 top 命令中的 CPU 使用率
2021-07-22 00:15:10平常我们使用top命令来查看系统的性能情况,在top命令中可以看到很多不同类型的 CPU 使用率,如下图红框中标出部分:下面,我们来介绍一下这些 CPU 使用率的意义:us:use... -
服务器CPU使用率过高排查与解决思路
2021-05-15 14:38:59发现服务器的cpu使用率特别高排查思路:-使用top或者mpstat查看cpu的使用情况mpstat -P ALL 2 1Linux 2.6.32-358.el6.x86_64 (linux—host) 01/05/2016 _x8664 (24 CPU)04:41:13 PM CPU %usr %nice %sys %iowait %... -
系统CPU负载过高、CPU使用率不高的问题
2021-05-15 05:13:46(1)、问题线上Tomcat服务器CPU的负载非常高,但是CPU使用率正常,如图:(2)、问题排查1、首先查看是哪些进程的CPU占用率最高(如下可以看到详细的路径)ps -aux --sort -pcpu | more# 定位有问题的线程可以用如下命令... -
用java获取linux服务器下的内存,cpu使用率,和硬盘信息
2021-04-27 17:33:14思路:java执行脚本,拿到返回值,读取返回值,再对返回值进行分析获取想要的值。 传统的jdk查询系统信息不适用,要么是误差大,要么是难以实现。 //代码运行到linux上 //获取 disk使用情况 单位Byte public static ... -
java使用oshi获取硬件信息,包括cpu温度
2021-11-03 17:00:34java使用oshi获取硬件信息,包括cpu温度