`

java搜集电脑cpu、内存、磁盘空间信息

    博客分类:
  • java
阅读更多
废话不多说,能用为主;sigar可以获取所有信息,难得弄了,cpu用它,其他自己获取就难得改了,sigar-x86-winnt.dll文件,它要放在jdk的bin目录下
主要涉及到 ManagementFactory,FileSystemView,Runtime,System,OperatingSystemMXBean 等类 本次代码写的较次,也是学习别人帖子和网上的东西弄的,瞧不起也不要喷,谢谢。



package monitor.services;

import java.io.File;
import java.lang.management.ManagementFactory;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;


import javax.swing.filechooser.FileSystemView;

import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;

import monitor.entity.CPUEntity;
import monitor.entity.Disk;
import monitor.util.ParameterUtil;

import com.sun.management.OperatingSystemMXBean;

public class SystemServicesImpl implements SystemServices {

private Sigar sigar = new Sigar();   //创建sigar对象,获取cpu各项信息;

/**
* 计算各个磁盘的大小、已用空间、剩余空间; 只获取本地磁盘信息,不获取U盘等外设信息
* @return
*/
public List<Disk> diskSpaceGather() {
List<Disk> diskList = new ArrayList<Disk>();
FileSystemView fileSystemView = FileSystemView.getFileSystemView();
File[] roots = File.listRoots();
for (File file : roots) {
Disk disk = new Disk();
if (ParameterUtil.LOCAL_DISK_NAME.equals(fileSystemView
.getSystemTypeDescription(file))) {
disk.setDiskName(file.getAbsolutePath());
disk.setFree(file.getFreeSpace() / ParameterUtil.GB);
disk.setTotal(file.getTotalSpace() / ParameterUtil.GB);
disk.setUsed(file.getUsableSpace() / ParameterUtil.GB);
diskList.add(disk);
}
}
return diskList;
}

/**
* 计算物理内存空间大小,包括总的大小,已使用,剩余量
*/
public Map<String,Object> physicalMemoryGather() {

Map<String,Object> hashMap=new HashMap<String,Object>();
OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory
.getOperatingSystemMXBean();
String osName = System.getProperty("os.name");
long totalMemory = osmxb.getTotalPhysicalMemorySize()/ ParameterUtil.MB;
long freeMemory = osmxb.getFreePhysicalMemorySize()/ ParameterUtil.MB;
long usedMemory = (osmxb.getTotalPhysicalMemorySize() - osmxb.getFreePhysicalMemorySize())/ ParameterUtil.MB;
hashMap.put("osName", osName);
hashMap.put("total", totalMemory);
hashMap.put("free", freeMemory);
hashMap.put("used", usedMemory);
return hashMap;
}

public List<CPUEntity> CPUInfoGather(){
List<CPUEntity> list = new ArrayList<CPUEntity>();
    CpuPerc[] cpus;
    CpuPerc total;
try {
cpus = this.sigar.getCpuPercList();  //获取每一个cpu核使用情况
total=this.sigar.getCpuPerc();      //获取cpu整体使用情况;
for (int i = 0; i < cpus.length; i++){ 
    CPUEntity cpu=new CPUEntity();
    cpu.setCpuName("CPU"+i);
        cpu.setUseTime(CpuPerc.format(cpus[i].getUser()));// 用户态使用的CPU百分比 
        cpu.setSysTime(CpuPerc.format(cpus[i].getSys()));// 系统态使用的CPU百分比 
        cpu.setIdleTime(CpuPerc.format(cpus[i].getIdle()));//CPU空闲时间 
        list.add(cpu);
        }   
CPUEntity CPUTotal=new CPUEntity();
CPUTotal.setCpuName("CPUTotal");
CPUTotal.setUseTime(CpuPerc.format(total.getUser()));
CPUTotal.setSysTime(CpuPerc.format(total.getSys()));
CPUTotal.setIdleTime(CpuPerc.format(total.getIdle()));
list.add(CPUTotal);
} catch (SigarException e) {
e.printStackTrace();

return list;
}

public static void main(String[] args) {
SystemServicesImpl service=new SystemServicesImpl();
Map<String,Object> memory=service.physicalMemoryGather();
List<Disk> list=service.diskSpaceGather();
System.out.println((String)memory.get("osName")+" "+"total "+(Long)memory.get("total")+"GB,free "+(Long)memory.get("free")+"GB,used "+(Long)memory.get("used")+"GB");
for(Iterator iterator = list.iterator();iterator.hasNext();)
{
Disk disk=(Disk) iterator.next();
disk.toString();

}
for(Iterator iterator = service.CPUInfoGather().iterator();iterator.hasNext();)
{
CPUEntity cpu=(CPUEntity) iterator.next();
System.out.println(cpu.getCpuName()+":"+cpu.getUseTime());
}


}





}
分享到:
评论

相关推荐

    监控内存、CPU、磁盘的使用情况

    OSHI是一个Java库,能够获取操作系统级别的硬件和软件信息,包括但不限于系统型号、CPU信息、内存状态、磁盘使用情况、网络接口状态等。它的设计目标是跨平台,这意味着开发者可以使用同一段代码来获取不同操作系统...

    使用sigar获取系统信息,内存,磁盘,jvm虚拟机等

    Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统信息收集库,由Hypertable组织开发。它提供了一种统一的API,允许开发者在多种操作系统上获取系统级别的信息,包括内存、CPU、磁盘、网络...

    snmp协议采集windows和linux服务器cpu/内存/磁盘信息。

    本项目利用SNMP协议来采集Windows和Linux服务器的CPU、内存以及磁盘信息,通过Java开发,采用SpringBoot框架构建一个完整的示例。 1. SNMP基础: SNMP由三部分组成:管理信息库(MIB)、管理站(Manager)和代理...

    基于java通过第三方jar包sigar的支持,完成对服务器系统的参数监控,包括CPU、内存、硬盘以及网络流量的实时监控.zip

    本项目就是基于Java利用第三方jar包Sigar(System Information Gatherer and Reporter)来实现服务器系统的实时参数监控,涵盖了CPU、内存、硬盘以及网络流量四大关键指标。 首先,让我们深入理解Sigar库。Sigar是...

    通过snmp的OID获取对方主机的内存利用率及CPU的使用率

    SNMP(Simple Network Management Protocol,简单网络管理协议)是一种广泛应用于网络设备监控的协议,它允许网络管理员远程收集和配置网络设备的状态信息。在本场景中,我们的目标是利用SNMP来获取远程主机的内存...

    Java获取系统信息(cpu,内存,硬盘,进程等)的相关方法

    ### Java 获取系统信息(CPU,内存,硬盘,进程等)的相关方法 在现代软件开发过程中,经常需要获取运行环境的一些基本信息,例如CPU使用率、内存使用情况、硬盘占用空间以及进程状态等。这些信息对于系统监控、...

    java获取服务器基本信息的方法

    在Java中获取服务器的基本信息是开发人员经常遇到的需求,这些信息包括但不限于CPU使用情况、内存利用率、磁盘空间以及网络状态等。以下是一些使用Java获取服务器基本信息的关键知识点: 1. **第三方库Sigar**: ...

    CPU内存参数监控程序

    1. **系统调用**:程序通过系统调用获取CPU和内存的实时信息,如Linux下的`/proc`文件系统,它提供了进程、CPU和内存的状态信息。 2. **数据采集**:使用适当的数据结构和算法来收集和存储CPU和内存的使用数据,如...

    java(sigar1.6) 获取本地系统信息大全 示例project

    这个项目示例主要展示了如何使用SIGAR库1.6版本来收集和分析本地系统的各种信息,包括JVM、内存、操作系统、文件系统和网络状态。以下是这些知识点的详细说明: 1. **Java虚拟机(JVM)信息**: SIGAR库可以获取...

    sigar读取服务器CPU内存数据.zip

    Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统信息收集工具,它提供了一种简单的方法来获取操作系统的关键信息,如CPU使用率、内存使用情况、网络流量、磁盘I/O等。在Java中使用Sigar库...

    Java进程cpu占用率高

    确保系统有足够的内存、磁盘空间和网络带宽。对于分布式系统,考虑负载均衡和资源调度策略,避免单点压力过大。 综上所述,解决“Java进程CPU占用率高”问题需要从多个角度出发,包括但不限于代码优化、JVM调优、...

    获取cpu使用率和内存使用情况

    在IT领域,实时监控系统资源,尤其是CPU使用率和内存使用情况,对于开发者和系统管理员来说至关重要。这有助于诊断性能瓶颈、优化代码以及确保系统的稳定运行。以下是对标题和描述中涉及的知识点的详细说明: 1. **...

    深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理).zip

    这涉及到对堆内存、方法区、栈空间等进行合理的设置,以及调整垃圾收集器的参数。例如,选择合适的新生代和老年代垃圾收集器组合,可以有效减少停顿时间并提高应用响应速度。另外,JVM的启动参数如-Xms、-Xmx用于...

    获取计算机cpu等信息的jar包.rar

    通过SIGAR,开发者可以轻松地获取到关于CPU利用率、内存状态、磁盘使用、网络流量等多种系统信息。这对于系统管理员来说,是一个极其便利的工具,能够帮助他们实时监控系统的运行状况,及时发现和处理问题。 CPU...

    Java运用sigar.jar获取服务器信息测试类

    总的来说,这个"Java运用sigar.jar获取服务器信息测试类"的目标是展示如何在Java程序中利用`sigar.jar`库来收集和报告服务器的详细信息。通过对CPU、内存、网络和操作系统的监控,可以帮助我们更好地理解服务器的...

    jmeter监控CPU&Memer;&IO;流程

    其中最常用的是PerfMonMetricsCollector插件,它可以收集服务器的CPU、内存、磁盘I/O等资源使用情况,并通过图形界面展示出来。 1. **下载插件**:从官方地址...

    基于Java的sigar_mirror(系统信息收集API_Sigar).zip

    2. **系统信息获取**: Sigar Mirror可能展示了如何获取CPU利用率、物理和虚拟内存信息、磁盘空间和I/O、网络接口统计、进程列表以及进程详细信息等。这些信息对于监控系统性能、调试问题或优化应用程序都是至关重要...

    如何借助Sigar API获取CPU相关信息

    Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统信息收集库,它提供了一种简单的方法来获取操作系统级别的信息,包括CPU、内存、网络、磁盘和其他资源的状态。本项目将详细介绍如何利用...

Global site tag (gtag.js) - Google Analytics