java获取cpu信息_Java获取系统内存、CPU、磁盘等信息

importjava.io.File;importjava.lang.management.ManagementFactory;importjava.lang.management.MemoryMXBean;importjava.lang.management.MemoryUsage;importcom.sun.management.OperatingSystemMXBean;importjava.text.DecimalFormat;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.concurrent.Executors;importjava.util.concurrent.TimeUnit;importoshi.SystemInfo;importoshi.hardware.CentralProcessor;/*** 系统监控*/

public classSystemMonitor {public voidinit() {

Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(()->{try{

SystemInfo systemInfo= newSystemInfo();

OperatingSystemMXBean osmxb=(OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();

MemoryMXBean memoryMXBean=ManagementFactory.getMemoryMXBean();//椎内存使用情况

MemoryUsage memoryUsage =memoryMXBean.getHeapMemoryUsage();//初始的总内存

long initTotalMemorySize =memoryUsage.getInit();//最大可用内存

long maxMemorySize =memoryUsage.getMax();//已使用的内存

long usedMemorySize =memoryUsage.getUsed();//操作系统

String osName = System.getProperty("os.name");//总的物理内存

String totalMemorySize = new DecimalFormat("#.##")

.format(osmxb.getTotalPhysicalMemorySize()/ 1024.0 / 1024 / 1024) + "G";//剩余的物理内存

String freePhysicalMemorySize = new DecimalFormat("#.##")

.format(osmxb.getFreePhysicalMemorySize()/ 1024.0 / 1024 / 1024) + "G";//已使用的物理内存

String usedMemory = new DecimalFormat("#.##").format(

(osmxb.getTotalPhysicalMemorySize()- osmxb.getFreePhysicalMemorySize()) / 1024.0 / 1024 / 1024)+ "G";//获得线程总数

ThreadGroup parentThread;for (parentThread =Thread.currentThread().getThreadGroup(); parentThread

.getParent()!= null; parentThread =parentThread.getParent()) {

}int totalThread =parentThread.activeCount();//磁盘使用情况

File[] files =File.listRoots();for(File file : files) {

String total= new DecimalFormat("#.#").format(file.getTotalSpace() * 1.0 / 1024 / 1024 / 1024)+ "G";

String free= new DecimalFormat("#.#").format(file.getFreeSpace() * 1.0 / 1024 / 1024 / 1024) + "G";

String un= new DecimalFormat("#.#").format(file.getUsableSpace() * 1.0 / 1024 / 1024 / 1024) + "G";

String path=file.getPath();

System.err.println(path+ "总:" + total + ",可用空间:" + un + ",空闲空间:" +free);

System.err.println("=============================================");

}

System.err.println("操作系统:" +osName);

System.err.println("程序启动时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

.format(newDate(ManagementFactory.getRuntimeMXBean().getStartTime())));

System.err.println("pid:" + System.getProperty("PID"));

System.err.println("cpu核数:" +Runtime.getRuntime().availableProcessors());

printlnCpuInfo(systemInfo);

System.err.println("JAVA_HOME:" + System.getProperty("java.home"));

System.err.println("JAVA_VERSION:" + System.getProperty("java.version"));

System.err.println("USER_HOME:" + System.getProperty("user.home"));

System.err.println("USER_NAME:" + System.getProperty("user.name"));

System.err.println("初始的总内存(JVM):"

+ new DecimalFormat("#.#").format(initTotalMemorySize * 1.0 / 1024 / 1024) + "M");

System.err.println("最大可用内存(JVM):" + new DecimalFormat("#.#").format(maxMemorySize * 1.0 / 1024 / 1024) + "M");

System.err.println("已使用的内存(JVM):" + new DecimalFormat("#.#").format(usedMemorySize * 1.0 / 1024 / 1024) + "M");

System.err.println("总的物理内存:" +totalMemorySize);

System.err

.println("总的物理内存:"

+ new DecimalFormat("#.##").format(

systemInfo.getHardware().getMemory().getTotal()* 1.0 / 1024 / 1024 / 1024)+ "M");

System.err.println("剩余的物理内存:" +freePhysicalMemorySize);

System.err

.println("剩余的物理内存:"

+ new DecimalFormat("#.##").format(

systemInfo.getHardware().getMemory().getAvailable()* 1.0 / 1024 / 1024 / 1024)+ "M");

System.err.println("已使用的物理内存:" +usedMemory);

System.err.println("已使用的物理内存:"

+ new DecimalFormat("#.##").format((systemInfo.getHardware().getMemory().getTotal()- systemInfo.getHardware().getMemory().getAvailable()) * 1.0 / 1024 / 1024 / 1024)+ "M");

System.err.println("总线程数:" +totalThread);

System.err.println("===========================");

}catch(Exception e) {

e.printStackTrace();

}

},0, 60, TimeUnit.SECONDS);

}/*** 打印 CPU 信息

*

*@paramsystemInfo*/

private void printlnCpuInfo(SystemInfo systemInfo) throwsInterruptedException {

CentralProcessor processor=systemInfo.getHardware().getProcessor();long[] prevTicks =processor.getSystemCpuLoadTicks();//睡眠1s

TimeUnit.SECONDS.sleep(1);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.err.println("cpu核数:" +processor.getLogicalProcessorCount());

System.err.println("cpu系统使用率:" + new DecimalFormat("#.##%").format(cSys * 1.0 /totalCpu));

System.err.println("cpu用户使用率:" + new DecimalFormat("#.##%").format(user * 1.0 /totalCpu));

System.err.println("cpu当前等待率:" + new DecimalFormat("#.##%").format(iowait * 1.0 /totalCpu));

System.err.println("cpu当前空闲率:" + new DecimalFormat("#.##%").format(idle * 1.0 /totalCpu));

System.err.format("CPU load: %.1f%% (counting ticks)%n", processor.getSystemCpuLoadBetweenTicks() * 100);

System.err.format("CPU load: %.1f%% (OS MXBean)%n", processor.getSystemCpuLoad() * 100);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
获取CPU内存磁盘状态等信息,可以使用Java的ManagementFactory类和OperatingSystemMXBean接口来获取系统信息。 以下是获取CPU内存磁盘状态信息的示例代码: ``` import java.lang.management.ManagementFactory; import java.lang.management.OperatingSystemMXBean; import java.net.InetAddress; public class SystemInfo { public static void main(String[] args) throws Exception { // 获取本机IP地址 InetAddress addr = InetAddress.getLocalHost(); String ip = addr.getHostAddress(); System.out.println("IP地址:" + ip); // 获取操作系统信息 OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); System.out.println("操作系统:" + osmxb.getName() + " " + osmxb.getVersion()); // 获取CPU信息 int processors = osmxb.getAvailableProcessors(); System.out.println("CPU核数:" + processors); // 获取内存信息 long totalMemorySize = osmxb.getTotalPhysicalMemorySize() / 1024 / 1024; long freeMemorySize = osmxb.getFreePhysicalMemorySize() / 1024 / 1024; long usedMemorySize = totalMemorySize - freeMemorySize; System.out.println("总内存:" + totalMemorySize + "MB"); System.out.println("已用内存:" + usedMemorySize + "MB"); System.out.println("空闲内存:" + freeMemorySize + "MB"); // 获取磁盘信息 long totalDiskSpace = new File("/").getTotalSpace() / 1024 / 1024; long freeDiskSpace = new File("/").getFreeSpace() / 1024 / 1024; long usedDiskSpace = totalDiskSpace - freeDiskSpace; System.out.println("总磁盘空间:" + totalDiskSpace + "MB"); System.out.println("已用磁盘空间:" + usedDiskSpace + "MB"); System.out.println("剩余磁盘空间:" + freeDiskSpace + "MB"); } } ``` 注意:需要添加以下依赖才能使用ManagementFactory类和OperatingSystemMXBean接口: ``` <dependency> <groupId>javax.management</groupId> <artifactId>javax.management-api</artifactId> <version>2.0.0</version> </dependency> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值