- 浏览: 63468 次
- 性别:
- 来自: 上海
文章分类
最新评论
废话不多说,能用为主;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 1185扩展xsd很简单,官方文档送上:https://docs.s ... -
cglib
2017-06-09 17:54 327import 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 1120public class SingleDemo { ... -
ThreadLocal源码分析一ThreadLocalMap类
2016-10-21 17:28 0接上文我们将到ThreadLocal基本相当于一个空壳,它 ... -
ThreadLocal源码分析一ThreadLocal类
2016-10-21 17:22 933ThreadLocal类提供线程局部变量。这些变量和其他普 ... -
阿里巴巴druid源码分析之 filter-chain设计模式
2016-09-20 18:18 7582druid是号称目前最好的java数据库连接池,温少写的代 ... -
ServiceLoader
2016-09-20 15:27 0https://my.oschina.net/hanzhank ... -
驼峰和下划线互转
2016-08-24 11:38 1267public class HumpLineUtil { ... -
java Eclipse配合开启远程debug
2016-08-11 11:18 428远程机器jar方式启动的时候需要指定dubug参数 ... -
java锁之wait,notify(wait会释放锁,notify仅仅只是通知,不释放锁)
2016-07-29 09:40 9242wait是指在一个已经进入了同步锁的线程内,让自己暂 ... -
java锁之CyclicBarrier(互相等待,直到大家都做完,一起开始下面)
2016-07-28 14:43 797参考文章:http://blog.csdn.net/lmc ... -
java锁之CountDownLatch(等待最后一个完成)
2016-07-28 11:19 1973线程同步工具,允许一个线程(或者多个线程)等待其他所有线程 ... -
java锁之Semaphore(信号量,限制并发数量)
2016-07-28 11:17 2030Semaphore也是一个线程同步的辅助类,可以维护当前访 ... -
内部类和final关键字
2016-07-28 11:08 403首先,内部类被编译的时候会生成一个单独的内部类的.class ... -
visitor设计模式
2016-06-29 14:09 285visitor设计模式 visitor设计模式的思 ... -
asm字节码生成技术,cglib
2016-06-29 11:25 592相关技术blog class文件解析: https:/ ...
相关推荐
RedCube是用 Java开发的用于应用检测,主机检测(cpu,磁盘,内存), 数据库检测,可以提前解决隐藏问题的软件;该软件分服务端和客户端,可将客户端部署在多台主机,服务端负责收集数据并展示数据. 特点:支持APP...
linux设备硬件信息的获取摘要: 本文主要分析了在linux设备上采集相关的硬件信息,并给出了java实现的方法。然后模拟了“玩客云”的场景,摘取了部分关键信息,上传至服务器。关键技术: linux命令行返回值的解析、...
笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此...
RedCube是用 Java开发的用于应用检测,主机检测(cpu,磁盘,内存), 数据库检测,可以提前解决隐藏问题的软件;该软件分服务端和客户端,可将客户端部署在多台主机,服务端负责收集数据并展示数据...
通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...
系统相关信息: 收集系统CPU,内存,环境变量等相关信息。 系统会话: 提供关机,休眠,重启,注销等功能。 系统IO及网络功能: 提供磁盘和网络相关信息。 活动桌面功能: 管理Windows活动桌面。 系统钩子: 注册和...
垃圾收集对 Java 性能的影响 用跟踪程序分析性能 理解跟踪程序 跟踪程序使用示例 从命令行启动和控制跟踪程序 从程序启动和控制跟踪 使用 trcrpt 命令格式化报告 添加新的跟踪事件 报告性能问题 测量基线 什么是性能...
系统相关信息: 收集系统CPU,内存,环境变量等相关信息。 系统会话: 提供关机,休眠,重启,注销等功能。 系统IO及网络功能: 提供磁盘和网络相关信息。 活动桌面功能: 管理Windows活动桌面。 系统钩子: 注册和卸载...
检查IT Ocelot 是一种零配置Java代理,用于基于动态收集应用程序性能,跟踪和... 磁盘空间(已用,可用和总计) 内存(用于堆或非堆等各种区域,并可以使用) 线程(计数和状态) 垃圾收集(暂停时间和收集统计信
2)技术需求, cpu,内存,网络吞吐量,磁盘吞吐量 3)标准要求: 竞品分析- 响应时间 互联网企业:500毫秒以下,例如淘宝业务10毫秒左右。 金融企业:1秒以下为佳,部分复杂业务3秒以下。 保险企业:3秒以下...
25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................
有关所有区域的信息, 请参阅 Oracle8i National Language Support Guide。 值范围: 任何有效的地区名。 默认值: 根据操作系统而定 nls_timestamp_format: 说明: 与 NLS_TIME_FORMAT 相似, 只不过它设置的是 ...
收集了以下信息:>>来自vmstat的输出>> netstat tcp状态和已建立的连接>>来自/ proc / fd的信息>> jstat -gc输出>> jstat -class输出>> CPU%,MEM%和ThreadCount从顶部开始和ps-command >> df-command中每个已安装...
8.3.1 在内存中进行全部或大部分排序 8.3.2 最小化排序时的空间管理开销 8.3.3 使用多个 TEMP 表空间分布排序 8.4 优化数据存储的技术 8.4.1 使行链接和行迁移最小化 8.4.2 检测行链接/迁移 8.4.3 确定模式中...
IOMeter 2006、07、27 4 网络应用性能测试 WebBench Netbench Benchmark Factory for Database5、7 1g 5 Cinebench10 x64测试 具体测试流程 先用EVEREST与CPU-z收集基本信息,并且截图。 1 SPEC2006 (有问题) 2 ...
磁盘:一般安装需要20M左右的空间,根据所选择模块的不同和安装方式的不同,最少也要5M的磁盘空间(从网络服务器读取) 内存:Windows 9x/Me:16M 内存;Windows NT/2000: Min 32M] Tuning模块需要额外的...
§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_...