`

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());
}


}





}
分享到:
评论

相关推荐

    使用java开发的监控系统。

    RedCube是用 Java开发的用于应用检测,主机检测(cpu,磁盘,内存), 数据库检测,可以提前解决隐藏问题的软件;该软件分服务端和客户端,可将客户端部署在多台主机,服务端负责收集数据并展示数据. 特点:支持APP...

    InformationGetter:获取linux设备的硬件信息,包括内存、CPU、磁盘和网络带宽

    linux设备硬件信息的获取摘要: 本文主要分析了在linux设备上采集相关的硬件信息,并给出了java实现的方法。然后模拟了“玩客云”的场景,摘取了部分关键信息,上传至服务器。关键技术: linux命令行返回值的解析、...

    JAVA上百实例源码以及开源项目

    笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此...

    java开发的系统监控源码

    RedCube是用​ ​Java​​开发的用于应用检测,主机检测(cpu,磁盘,内存),​ ​数据库​​检测,可以提前解决隐藏问题的软件;该软件分服务端和客户端,可将客户端部署在多台主机,服务端负责收集数据并展示数据...

    JAVA上百实例源码以及开源项目源代码

     通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...

    java键盘鼠标模拟监控

    系统相关信息: 收集系统CPU,内存,环境变量等相关信息。 系统会话: 提供关机,休眠,重启,注销等功能。 系统IO及网络功能: 提供磁盘和网络相关信息。 活动桌面功能: 管理Windows活动桌面。 系统钩子: 注册和...

    UNIX-IBMAIX5L参考-性能管理指南.chm

    垃圾收集对 Java 性能的影响 用跟踪程序分析性能 理解跟踪程序 跟踪程序使用示例 从命令行启动和控制跟踪程序 从程序启动和控制跟踪 使用 trcrpt 命令格式化报告 添加新的跟踪事件 报告性能问题 测量基线 什么是性能...

    SWT WIN32 Extension

    系统相关信息: 收集系统CPU,内存,环境变量等相关信息。 系统会话: 提供关机,休眠,重启,注销等功能。 系统IO及网络功能: 提供磁盘和网络相关信息。 活动桌面功能: 管理Windows活动桌面。 系统钩子: 注册和卸载...

    inspectit-ocelot:inspectIT Ocelot-用于收集应用程序性能,跟踪和行为数据的Java代理

    检查IT Ocelot 是一种零配置Java代理,用于基于动态收集应用程序性能,跟踪和... 磁盘空间(已用,可用和总计) 内存(用于堆或非堆等各种区域,并可以使用) 线程(计数和状态) 垃圾收集(暂停时间和收集统计信

    JMeter操作手册大全.docx

    2)技术需求, cpu,内存,网络吞吐量,磁盘吞吐量 3)标准要求: 竞品分析- 响应时间 互联网企业:500毫秒以下,例如淘宝业务10毫秒左右。 金融企业:1秒以下为佳,部分复杂业务3秒以下。 保险企业:3秒以下...

    JAVA核心知识点整理(有效)

    25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................

    Oracle9i的init.ora参数中文说明

    有关所有区域的信息, 请参阅 Oracle8i National Language Support Guide。 值范围: 任何有效的地区名。 默认值: 根据操作系统而定 nls_timestamp_format: 说明: 与 NLS_TIME_FORMAT 相似, 只不过它设置的是 ...

    Metric Collector:一个bash脚本,用于从Linux系统收集指标。-开源

    收集了以下信息:&gt;&gt;来自vmstat的输出&gt;&gt; netstat tcp状态和已建立的连接&gt;&gt;来自/ proc / fd的信息&gt;&gt; jstat -gc输出&gt;&gt; jstat -class输出&gt;&gt; CPU%,MEM%和ThreadCount从顶部开始和ps-command &gt;&gt; df-command中每个已安装...

    Oracle数据库管理员技术指南

    8.3.1 在内存中进行全部或大部分排序 8.3.2 最小化排序时的空间管理开销 8.3.3 使用多个 TEMP 表空间分布排序 8.4 优化数据存储的技术 8.4.1 使行链接和行迁移最小化 8.4.2 检测行链接/迁移 8.4.3 确定模式中...

    服务器测试流程.doc

    IOMeter 2006、07、27 4 网络应用性能测试 WebBench Netbench Benchmark Factory for Database5、7 1g 5 Cinebench10 x64测试 具体测试流程 先用EVEREST与CPU-z收集基本信息,并且截图。 1 SPEC2006 (有问题) 2 ...

    Toad 使用快速入门

     磁盘:一般安装需要20M左右的空间,根据所选择模块的不同和安装方式的不同,最少也要5M的磁盘空间(从网络服务器读取)  内存:Windows 9x/Me:16M 内存;Windows NT/2000: Min 32M]  Tuning模块需要额外的...

    ORACLE9i_优化设计与系统调整

    §3.4.5 CPU个数(CPU_COUNT) 72 §3.4.6 数据缓冲区块数(DB_BLOCK_BUFFERS) 72 §3.4.7 数据块大小(DB_BLOCK_SIZE) 73 §3.4.8 读数据块数(DB_FILE_MULTIBLOCK_READ_COUNT) 73 §3.4.9 数据文件的数目(DB_...

Global site tag (gtag.js) - Google Analytics