Java 实现查看cpu信息、服务器信息、操作系统信息、jvm 信息
Java 实现查看cpu信息、服务器信息、操作系统信息、jvm 信息
文章目录
引入依赖
获取 cpu 信息
获取服务器信息
formatByte 换算单位工具类
获取操作系统信息
获取 JVM 信息
测试结果
Java想要实现跨平台查看服务器信息,可以使用 OSHI 开源 jar 包实现
com.github.oshi
oshi-core
3.12.2
/**
* 获取 cpu 信息
*/
private static void getCpuInfo() {
System.err.println("===============cpu信息begin===============");
SystemInfo systemInfo = new SystemInfo();
CentralProcessor processor = systemInfo.getHardware().getProcessor();
long[] prevTicks = processor.getSystemCpuLoadTicks();
try {
// 睡眠 1s
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
long[] ticks = processor.getSystemCpuLoadTicks();
long nice = ticks[CentralProcessor.TickType.NICE.getIndex()] - prevTicks[CentralProcessor.TickType.NICE.getIndex()];
long irq = ticks[CentralProcessor.TickType.IRQ.getIndex()] - prevTicks[CentralProcessor.TickType.IRQ.getIndex()];
long softirq = ticks[CentralProcessor.TickType.SOFTIRQ.getIndex()] - prevTicks[CentralProcessor.TickType.SOFTIRQ.getIndex()];
long steal = ticks[CentralProcessor.TickType.STEAL.getIndex()] - prevTicks[CentralProcessor.TickType.STEAL.getIndex()];
long cSys = ticks[CentralProcessor.TickType.SYSTEM.getIndex()] - prevTicks[CentralProcessor.TickType.SYSTEM.getIndex()];
long user = ticks[CentralProcessor.TickType.USER.getIndex()] - prevTicks[CentralProcessor.TickType.USER.getIndex()];
long iowait = ticks[CentralProcessor.TickType.IOWAIT.getIndex()] - prevTicks[CentralProcessor.TickType.IOWAIT.getIndex()];
long idle = ticks[CentralProcessor.TickType.IDLE.getIndex()] - prevTicks[CentralProcessor.TickType.IDLE.getIndex()];
long totalCpu = user + nice + cSys + idle + iowait + irq + softirq + steal;
System.out.println("cpu核数:" + processor.getLogicalProcessorCount());
System.out.println("cpu系统使用率:" + new DecimalFormat("#.##%").format(cSys * 1.0 / totalCpu));
System.out.println("cpu用户使用率:" + new DecimalFormat("#.##%").format(user * 1.0 / totalCpu));
System.out.println("cpu当前等待率:" + new DecimalFormat("#.##%").format(iowait * 1.0 / totalCpu));
System.out.println("cpu当前使用率:" + new DecimalFormat("#.##%").format(1.0 - (idle * 1.0 / totalCpu)));
System.err.println("===============cpu信息end===============\n");
}
/**
* 获取主机内存信息
*/
private static void getMemoryInfo() {
System.err.println("===============主机内存信息begin===============");
SystemInfo systemInfo = new SystemInfo();
GlobalMemory memory = systemInfo.getHardware().getMemory();
long totalMemory = memory.getTotal(); // 总内存
long acaliableMemory = memory.getAvailable(); // 剩余内存
System.out.println("总内存:" + formatByte(totalMemory));
System.out.println("已经使用的内存:" + formatByte(totalMemory - acaliableMemory));
System.out.println("剩余内存:" + formatByte(acaliableMemory));
System.out.println("使用率:" + new DecimalFormat("#.##%").format((totalMemory - acaliableMemory) * 1.0 / totalMemory));
System.err.println("===============主机内存信息end===============\n");
}
/**
* 换算单位
*
* @param byteNumber 换算的数字
*/
private static String formatByte(long byteNumber) {
double format = 1024.0;
double kbNumber = byteNumber / format;
if (kbNumber < format)
return new DecimalFormat("#.##KB").format(kbNumber);
double mbNumber = kbNumber / format;
if (mbNumber < format)
return new DecimalFormat("#.##MB").format(mbNumber);
double gbNumber = mbNumber / format;
if (gbNumber < format)
return new DecimalFormat("#.##GB").format(gbNumber);
double tbNumber = gbNumber / format;
return new DecimalFormat("#.##TB").format(tbNumber);
}
/**
* 获取操作系统信息
*/
private static void getSystemInfo() {
System.err.println("===============操作系统信息begin==============");
String osName = System.getProperty("os.name"); // 系统名称
String osArch = System.getProperty("os.arch"); // 架构名称
System.out.println("操作系统名称:" + osName);
System.out.println("系统架构:" + osArch);
System.err.println("===============操作系统信息end==============\n");
}
/**
* 获取 Jvm 信息
*/
private static void getJvmInfo() {
System.err.println("===============Jvm信息begin===============");
Runtime runtime = Runtime.getRuntime();
long jvmTotalMemoryByte = runtime.totalMemory(); // jvm总内存
long jvmMaxMemoryByte = runtime.maxMemory(); // jvm 最大内存
long freeMemoryByte = runtime.freeMemory(); // jvm 空闲空间
String jdkVersion = System.getProperty("java.version"); // jdk 版本
String jdkHome = System.getProperty("java.home"); // jdk 安装路径
System.out.println("jvm总内存:" + formatByte(jvmTotalMemoryByte));
System.out.println("jvm已使用内存:" + formatByte(jvmTotalMemoryByte - freeMemoryByte));
System.out.println("jvm最大内存:" + formatByte(jvmMaxMemoryByte));
System.out.println("jvm剩余内存:" + formatByte(freeMemoryByte));
System.out.println("jvm内存使用率:" + new DecimalFormat("#.##%").format((jvmTotalMemoryByte - freeMemoryByte) * 1.0 / jvmTotalMemoryByte));
System.out.println("jdk版本号:" + jdkVersion);
System.out.println("jdk安装路径:" + jdkHome);
System.err.println("===============Jvm信息end===============");
}
Java 实现查看cpu信息、服务器信息、操作系统信息、jvm 信息相关教程
AIM2020-ESR冠军方案解读:引入注意力模块ESA,实现高效轻量的超
AIM2020-ESR冠军方案解读:引入注意力模块ESA,实现高效轻量的超分网络(附代码实现) 该文是南京大学提出的一种轻量高效图像超分网络,它获得了AIM20-ESR竞赛的冠军。它在IMDN的基础上提出了两点改进,并引入RFANet的一种ESA注意力模块。如果从结果出发来看R
webSocket实现客户端登录唯一(同时间只有一台pc登录该账号)
webSocket实现客户端登录唯一(同时间只有一台pc登录该账号) 它可以实现B/S之间的长连接 WebSocket是一种在单个TCP连接上进行全双工通信的协议。 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API
蓝桥杯__基础练习3__字母图形__java,两种解法
蓝桥杯__基础练习3__字母图形__java,两种解法 题目: 法一: ??分析: ????我们假设A = 0,B = 1,C = 2,……这时,5行7列的图形就变成了: ????0123456 ????1012345 ????2101234 ????3210123 ????4321012 ????找规律,我们发现,某位置的数字 = 该数字所在
线性表-顺序表C语言实现
线性表-顺序表C语言实现 线性表,全名为 线性存储结构 。使用线性表存储结构的方式可以理解,即“ 把所有的数据都用一根线串起来在存储到物理空间中 ”。 顺序存储结构和链式存储结构 将数据依次存储在连续的整块物理空间中,这种存储结构称为 顺序存储结构
taro实现小程序端瀑布流
taro实现小程序端瀑布流 微信小程序暂时未发现如何获取dom,但能获取节点的信息taro端可通过ref获取到节点,但无法通过节点获取节点的相关信息 效果图: 代码示例: import Taro from '@tarojs/taro'import {View,Text,Image} from '@tarojs/components'import Re
055.Javascript初探
055.Javascript初探 文章目录 一、JavaScript简介 二、JavaScript引入方式 三、JavaScript语法规范 四、变量 五、数据类型与内置方法 (一)数值(Number) (二)**字符串(String)** (三)布尔值(Boolean) (四)null和undefined (五)常用内置对象 1.
iframe实现页中页效果只需两步走
iframe实现页中页效果只需两步走 实现步骤 1、 target 链接目标打开的位置。 2、设置 iframe 。 点击跳转后 仅参考 style * { padding: 0; margin: 0; } /* 大盒子分左右 */ .menu { display: flex; width: 100%; } /* 左边 */ .menu .list_left { width: 200
idea maven打包 报错java找不到符号
idea maven打包 报错:java:找不到符号 idea项目不报错,可以正常跑起来,但是打包报错:java:找不到符号 尝试了很多方法,都没有解决。久其原因就是,多模块项目相互依赖关系比较复杂造成的。或者其他原因导致编译失败。、 首先声明,项目在idea中用tomcat