java获得CPU使用率,系统内存,虚拟…

程序计算时间:

longstartTime=System.currentTimeMillis();  //获取开始时间

。。。。。。。。。。。。
long endTime=System.currentTimeMillis(); //获取结束时间

System.out.println("程序运行时间: "+(endTime-startTime)+"ms(毫秒)");

 利用java程序实现获取计算机cpu利用率和内存使用信息。  
 
   创建一个Bean用来存贮要得到的信   
 
public class MonitorInfoBean {  
      
    private longtotalMemory;   
    
      
    private longfreeMemory;   
    
      
    private longmaxMemory;   
    
      
    privateString osName;   
    
      
    private longtotalMemorySize;   
    
      
    private longfreePhysicalMemorySize;   
    
      
    private longusedMemory;   
    
      
    private inttotalThread;   
    
      
    privatedouble cpuRatio;   
 
    public longgetFreeMemory() {   
       return freeMemory;   
   }   
 
    public voidsetFreeMemory(long freeMemory) {  
       this.freeMemory = freeMemory;  
   }   
 
    public longgetFreePhysicalMemorySize() {  
       return freePhysicalMemorySize;  
   }   
 
    public voidsetFreePhysicalMemorySize(long freePhysicalMemorySize){   
       this.freePhysicalMemorySize =freePhysicalMemorySize;   
   }   
 
    public longgetMaxMemory() {   
       return maxMemory;   
   }   
 
    public voidsetMaxMemory(long maxMemory) {  
       this.maxMemory = maxMemory;  
   }   
 
    publicString getOsName() {   
       return osName;   
   }   
 
    public voidsetOsName(String osName) {  
       this.osName = osName;   
   }   
 
    public longgetTotalMemory() {   
       return totalMemory;   
   }   
 
    public voidsetTotalMemory(long totalMemory) {  
       this.totalMemory = totalMemory;  
   }   
 
    public longgetTotalMemorySize() {   
       return totalMemorySize;   
   }   
 
    public voidsetTotalMemorySize(long totalMemorySize) {  
       this.totalMemorySize = totalMemorySize;  
   }   
 
    public intgetTotalThread() {   
       return totalThread;   
   }   
 
    public voidsetTotalThread(int totalThread) {  
       this.totalThread = totalThread;  
   }   
 
    public longgetUsedMemory() {   
       return usedMemory;   
   }   
 
    public voidsetUsedMemory(long usedMemory) {  
       this.usedMemory = usedMemory;  
   }   
 
    publicdouble getCpuRatio() {   
       return cpuRatio;   
   }   
 
    public voidsetCpuRatio(double cpuRatio) {  
       this.cpuRatio = cpuRatio;  
   }   
}   
 
   之后,建立bean的接口   
 
public interface IMonitorService {  
    publicMonitorInfoBean getMonitorInfoBean() throwsException;   
 
}   
 
 然后,就是最关键的,得到cpu的利用率,已用内存,可用内存,最大内存等信息。  
 
import java.io.InputStreamReader;  
import java.io.LineNumberReader;  
 
import sun.management.ManagementFactory;  
 
import com.sun.management.OperatingSystemMXBean;  
import java.io.*;   
import java.util.StringTokenizer;  
 
   
public class MonitorServiceImpl implements IMonitorService{   
    
    privatestatic final int CPUTIME = 30;  
 
    privatestatic final int PERCENT = 100;  
 
    privatestatic final int FAULTLENGTH = 10;  
    
    privatestatic final File versionFile = newFile("/proc/version");   
    privatestatic String linuxVersion = null;  
 
      
    publicMonitorInfoBean getMonitorInfoBean() throws Exception{   
       int kb = 1024;   
        
       // 可使用内存   
       long totalMemory = Runtime.getRuntime().totalMemory() /kb;   
       // 剩余内存   
       long freeMemory = Runtime.getRuntime().freeMemory() /kb;   
       // 最大可使用内存   
       long maxMemory = Runtime.getRuntime().maxMemory() /kb;   
 
       OperatingSystemMXBean osmxb = (OperatingSystemMXBean)ManagementFactory   
               .getOperatingSystemMXBean();  
 
       // 操作系统   
       String osName = System.getProperty("os.name");  
       // 总的物理内存   
       long totalMemorySize = osmxb.getTotalPhysicalMemorySize() /kb;   
       // 剩余的物理内存   
       long freePhysicalMemorySize = osmxb.getFreePhysicalMemorySize() /kb;   
       // 已使用的物理内存   
       long usedMemory = (osmxb.getTotalPhysicalMemorySize() -osmxb   
               .getFreePhysicalMemorySize())  
               / kb;   
 
       // 获得线程总数   
       ThreadGroup parentThread;  
       for (parentThread = Thread.currentThread().getThreadGroup();parentThread   
               .getParent() != null; parentThread =parentThread.getParent())  
           ;   
       int totalThread = parentThread.activeCount();  
 
       double cpuRatio = 0;   
       if (osName.toLowerCase().startsWith("windows")) {  
           cpuRatio = this.getCpuRatioForWindows();  
       }   
       else {   
        cpuRatio = this.getCpuRateForLinux();  
       }   
        
       // 构造返回对象   
       MonitorInfoBean infoBean = new MonitorInfoBean();  
       infoBean.setFreeMemory(freeMemory);  
       infoBean.setFreePhysicalMemorySize(freePhysicalMemorySize);  
       infoBean.setMaxMemory(maxMemory);  
       infoBean.setOsName(osName);  
       infoBean.setTotalMemory(totalMemory);  
       infoBean.setTotalMemorySize(totalMemorySize);  
     

时间: 2024-10-21 10:44:24

java获得CPU使用率,系统内存,虚拟…的相关文章

一个进程中创建了n个子appdomain,如何实时取得子Appdomain的cpu使用率 和 内存使用率、线程数?

问题描述 一个进程中创建了n个子appdomain,如何实时取得子Appdomain的cpu使用率和内存使用率.线程数?我使用下面的方法取得的值似乎不正确.publicstaticdoubleGetAppDomainCpuUsage(AppDomainhostDomain){if(Process.GetCurrentProcess().TotalProcessorTime.TotalMilliseconds>0)returnhostDomain.MonitoringTotalProcessorT

vSphere二次开发,如何实时获取虚拟机的性能?例如cpu使用率和内存使用情况

问题描述 对于vSphereSDK的二次开发,使用的是javaweb的形式,想在我自己的代码里实时获取到虚拟机的资源使用情况,但是找了好多代码也没有找到太合适的,有高人指导下我吗,谢谢了 解决方案 解决方案二:我实现了...but好像回复的有点晚解决方案三:这是我找到一个http://blog.csdn.net/zhouzhiwengang/article/details/45150113解决方案四:引用1楼u013256816的回复: 我实现了...but好像回复的有点晚 如何实现的分享一下吧

聊聊Java和CPU的关系_java

其实写Java的人貌似和CPU没啥关系,最多最多和我们在前面提及到的如何将CPU跑满.如何设置线程数有点关系,但是那个算法只是一个参考,很多场景不同需要采取实际的手段来解决才可以:而且将CPU跑满后我们还会考虑如何让CPU不是那么满,呵呵,人类,就是这么XX,呵呵,好了,本文要说的是其他的一些东西,也许你在java的写代码时几乎不用关注CPU,因为满足业务才是第一重要的事情,如果你要做到框架级别,为框架提供很多共享数据缓存之类的东西,中间必然存在很多数据的征用问题,当然java提供了很多conc

Android编程实现获取系统内存、CPU使用率及状态栏高度的方法示例

本文实例讲述了Android编程实现获取系统内存.CPU使用率及状态栏高度的方法.分享给大家供大家参考,具体如下: DeviceInfoManage类用于获取系统的内存,CPU的信息,以及状态栏的高度 import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReade

解决Win7系统cpu使用率高的方法汇总

Win7系统cpu使用率高的解决方法汇总: 1.你打开任务管理器,再点进程,看哪些程序占用了CPU,然后关掉就可以了. 2.在任务管理器中看看是那个进程占用CPU比较大,找到这样的进程后在百度上搜一下这个进程是干什么用的,知道是干什么用的之后就可以决定是留还是关. 3.使用3方软件,诸如超级兔子,硬件大师之流的. 4.木有办法,win7的内存太大了之前我用xp的才9%,换了win7的达到了21%,所谓的鱼和熊掌不能兼得. 5.关闭相应占用cpu多的程序,但是,要确定它是安装软件后自动启动的噢,有

win7系统怎么降低CPU使用率?

  win7怎么降低CPU使用率? 方法/步骤: 方法一:减少电脑启动服务项.点电脑桌面左下角的"开始"菜单,在运行内输入msconfig,如图: 输入完之后按回车进入启动设置项,在这里找到启动,取消不需要的启动项,如图: 方法二:在任务管理器中结束相应的进程.同时按下Ctrl+Alt+Del组合键,打开任务管理器,在这里面查找所有启动的程序,看哪个内存占用率高就把这个程序结束,如图: 方法三:查看电脑是否中毒?这里小编使用的事360杀毒软件,电脑CPU使用率过高有可能是中毒后的症状,

java获得当前系统内存及硬盘使用情况的代码

java获得当前系统内存情况的代码如下: /** *//** http://www.bt285.cn/ http://www.5a520.cn/ */ import java.lang.management.ManagementFactory; import com.sun.management.OperatingSystemMXBean; public class OSTest { public static void main(String[] args) { OperatingSystem

Win7系统CPU使用率100怎么办?

  Win7系统CPU使用率100怎么办?1.按下键盘的"Ctrl+alt+del"组合键,打开任务管理器,或者在任务栏上点击鼠标右键,启动任务管理器,两种方法都是可以进行操作的. 2.任务管理器界面,点击进程打开,然后我们选择占用CPU非常高的进程,然后关闭进程,这样可以降低CPU的使用率,这里每个进程都有具体的介绍,将一些自己确定不使用但是还非常占用CPU进程关闭,这里一些系统进程不要关闭比如,SVCHOST.EXE进程. 3.性能里面,我们可以监视CPU的使用率.打开资源监视器.

win7系统CPU使用率突然变高又突然变低的解决方法

  操作win7纯净版系统时遇到CPU使用率突然变高又突然变低的情况,严重拖慢系统运行速度,还导致电脑发热,如果长时间这样,对电脑硬盘的损耗是很大的,为什么会发生这样的情况呢?很多用户都不知道CPU使用率突然变高又突然变低的原因,下面小编和大家讲解一下win7系统CPU使用率突然变高又突然变低的解决方法. 步骤如下: 1.首先要明白在哪里查看CPU使用率,我们右键桌面的底部工具栏,然后选择启动任务管理器; 2.在弹出的Windows任务管理器选项卡中选择性能选项,在这里就可以查看电脑的CPU使用