- 浏览: 66317 次
- 性别:
- 来自: 上海
文章分类
最新评论
废话不多说,能用为主;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());
}
}
}
主要涉及到 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());
}
}
}
- sigar-1.6.3.82.jar (413.3 KB)
- 下载次数: 0
发表评论
-
自定义xsd扩展
2018-12-24 11:43 1230扩展xsd很简单,官方文档送上:https://docs.s ... -
cglib
2017-06-09 17:54 363import net.sf.cglib.core.Nami ... -
最近学习经验总结二
2017-03-02 15:50 0集合框架: Collection L ... -
最近学习经验总结一
2017-03-02 15:49 0java 基础(重点多线程,锁) ArrayList 数据 ... -
mysql乐观锁/悲观锁
2017-02-24 09:29 0http://chenzhou123520.iteye.co ... -
一致性hash
2017-02-23 19:47 0http://www.blogjava.net/hello-y ... -
单例模式写法之SingletonHolder
2017-02-20 11:16 1196public class SingleDemo { ... -
ThreadLocal源码分析一ThreadLocalMap类
2016-10-21 17:28 0接上文我们将到ThreadLocal基本相当于一个空壳,它 ... -
ThreadLocal源码分析一ThreadLocal类
2016-10-21 17:22 999ThreadLocal类提供线程局部变量。这些变量和其他普 ... -
阿里巴巴druid源码分析之 filter-chain设计模式
2016-09-20 18:18 7690druid是号称目前最好的java数据库连接池,温少写的代 ... -
ServiceLoader
2016-09-20 15:27 0https://my.oschina.net/hanzhank ... -
驼峰和下划线互转
2016-08-24 11:38 1315public class HumpLineUtil { ... -
java Eclipse配合开启远程debug
2016-08-11 11:18 480远程机器jar方式启动的时候需要指定dubug参数 ... -
java锁之wait,notify(wait会释放锁,notify仅仅只是通知,不释放锁)
2016-07-29 09:40 9362wait是指在一个已经进入了同步锁的线程内,让自己暂 ... -
java锁之CyclicBarrier(互相等待,直到大家都做完,一起开始下面)
2016-07-28 14:43 855参考文章:http://blog.csdn.net/lmc ... -
java锁之CountDownLatch(等待最后一个完成)
2016-07-28 11:19 2033线程同步工具,允许一个线程(或者多个线程)等待其他所有线程 ... -
java锁之Semaphore(信号量,限制并发数量)
2016-07-28 11:17 2076Semaphore也是一个线程同步的辅助类,可以维护当前访 ... -
内部类和final关键字
2016-07-28 11:08 455首先,内部类被编译的时候会生成一个单独的内部类的.class ... -
visitor设计模式
2016-06-29 14:09 324visitor设计模式 visitor设计模式的思 ... -
asm字节码生成技术,cglib
2016-06-29 11:25 642相关技术blog class文件解析: https:/ ...
相关推荐
OSHI是一个Java库,能够获取操作系统级别的硬件和软件信息,包括但不限于系统型号、CPU信息、内存状态、磁盘使用情况、网络接口状态等。它的设计目标是跨平台,这意味着开发者可以使用同一段代码来获取不同操作系统...
Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统信息收集库,由Hypertable组织开发。它提供了一种统一的API,允许开发者在多种操作系统上获取系统级别的信息,包括内存、CPU、磁盘、网络...
本项目利用SNMP协议来采集Windows和Linux服务器的CPU、内存以及磁盘信息,通过Java开发,采用SpringBoot框架构建一个完整的示例。 1. SNMP基础: SNMP由三部分组成:管理信息库(MIB)、管理站(Manager)和代理...
本项目就是基于Java利用第三方jar包Sigar(System Information Gatherer and Reporter)来实现服务器系统的实时参数监控,涵盖了CPU、内存、硬盘以及网络流量四大关键指标。 首先,让我们深入理解Sigar库。Sigar是...
SNMP(Simple Network Management Protocol,简单网络管理协议)是一种广泛应用于网络设备监控的协议,它允许网络管理员远程收集和配置网络设备的状态信息。在本场景中,我们的目标是利用SNMP来获取远程主机的内存...
### Java 获取系统信息(CPU,内存,硬盘,进程等)的相关方法 在现代软件开发过程中,经常需要获取运行环境的一些基本信息,例如CPU使用率、内存使用情况、硬盘占用空间以及进程状态等。这些信息对于系统监控、...
在Java中获取服务器的基本信息是开发人员经常遇到的需求,这些信息包括但不限于CPU使用情况、内存利用率、磁盘空间以及网络状态等。以下是一些使用Java获取服务器基本信息的关键知识点: 1. **第三方库Sigar**: ...
1. **系统调用**:程序通过系统调用获取CPU和内存的实时信息,如Linux下的`/proc`文件系统,它提供了进程、CPU和内存的状态信息。 2. **数据采集**:使用适当的数据结构和算法来收集和存储CPU和内存的使用数据,如...
这个项目示例主要展示了如何使用SIGAR库1.6版本来收集和分析本地系统的各种信息,包括JVM、内存、操作系统、文件系统和网络状态。以下是这些知识点的详细说明: 1. **Java虚拟机(JVM)信息**: SIGAR库可以获取...
Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统信息收集工具,它提供了一种简单的方法来获取操作系统的关键信息,如CPU使用率、内存使用情况、网络流量、磁盘I/O等。在Java中使用Sigar库...
确保系统有足够的内存、磁盘空间和网络带宽。对于分布式系统,考虑负载均衡和资源调度策略,避免单点压力过大。 综上所述,解决“Java进程CPU占用率高”问题需要从多个角度出发,包括但不限于代码优化、JVM调优、...
在IT领域,实时监控系统资源,尤其是CPU使用率和内存使用情况,对于开发者和系统管理员来说至关重要。这有助于诊断性能瓶颈、优化代码以及确保系统的稳定运行。以下是对标题和描述中涉及的知识点的详细说明: 1. **...
这涉及到对堆内存、方法区、栈空间等进行合理的设置,以及调整垃圾收集器的参数。例如,选择合适的新生代和老年代垃圾收集器组合,可以有效减少停顿时间并提高应用响应速度。另外,JVM的启动参数如-Xms、-Xmx用于...
通过SIGAR,开发者可以轻松地获取到关于CPU利用率、内存状态、磁盘使用、网络流量等多种系统信息。这对于系统管理员来说,是一个极其便利的工具,能够帮助他们实时监控系统的运行状况,及时发现和处理问题。 CPU...
总的来说,这个"Java运用sigar.jar获取服务器信息测试类"的目标是展示如何在Java程序中利用`sigar.jar`库来收集和报告服务器的详细信息。通过对CPU、内存、网络和操作系统的监控,可以帮助我们更好地理解服务器的...
其中最常用的是PerfMonMetricsCollector插件,它可以收集服务器的CPU、内存、磁盘I/O等资源使用情况,并通过图形界面展示出来。 1. **下载插件**:从官方地址...
2. **系统信息获取**: Sigar Mirror可能展示了如何获取CPU利用率、物理和虚拟内存信息、磁盘空间和I/O、网络接口统计、进程列表以及进程详细信息等。这些信息对于监控系统性能、调试问题或优化应用程序都是至关重要...
Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统信息收集库,它提供了一种简单的方法来获取操作系统级别的信息,包括CPU、内存、网络、磁盘和其他资源的状态。本项目将详细介绍如何利用...