`
l540151663
  • 浏览: 185372 次
  • 性别: Icon_minigender_1
  • 来自: 浙江
社区版块
存档分类
最新评论

cpu占用率与内存使用情况

 
阅读更多
1.内存使用情况,代码如下:
package com.lml.ratetest;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.MemoryInfo;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.format.Formatter;
import android.util.Log;
import android.widget.TextView;

public class MemoryActivity extends Activity {
TextView tvMemory;
Handler handler;
UpdateThread thread;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tvactivity);

tvMemory = (TextView) findViewById(R.id.tvRate);
handler = new Handler() {

@Override
public void handleMessage(Message msg) {
if (msg.what == 2) {
tvMemory.setText("RAM一共: " + getTotalMemory() + ", "
+ "可用: " + getAvailMemory()+", 已用:"+getUsed());
}
}
};

thread = new UpdateThread();
thread.start();

}

public class UpdateThread extends Thread {
public void run() {
while (!Thread.currentThread().isInterrupted()) {

Message msg = new Message();
msg.what = 2;
handler.sendMessage(msg);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}

@Override
protected void onDestroy() {
super.onDestroy();
thread.interrupt();
}

public String getAvailMemory() {
return Formatter.formatFileSize(getBaseContext(), getAvailMemoryByByte());
}

public long getAvailMemoryByByte(){
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
MemoryInfo mi = new MemoryInfo();
am.getMemoryInfo(mi);
return mi.availMem;
}

public long getTotalMemoryByByte(){
String str1 = "/proc/meminfo";// 系统内存信息文件
String str2;
String[] arrayOfString;
long initial_memory = 0;
try {
FileReader localFileReader = new FileReader(str1);
BufferedReader localBufferedReader = new BufferedReader(
localFileReader, 8192);
str2 = localBufferedReader.readLine();// 读取meminfo第一行,系统总内存大小
arrayOfString = str2.split("\\s+");
for (String num : arrayOfString) {
Log.i(str2, num + "\t");
}
initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;// 获得系统总内存,单位是KB,乘以1024转换为Byte
localBufferedReader.close();
} catch (IOException e) {
return 0;
}
return initial_memory;
}
public String getTotalMemory() {
return Formatter.formatFileSize(getBaseContext(), getTotalMemoryByByte());// Byte转换为KB或者MB,内存大小规格化
}
public long getUsedByByte(){
long used = getTotalMemoryByByte()-getAvailMemoryByByte();
return used;
}
public String getUsed(){
return Formatter.formatFileSize(getBaseContext(), getUsedByByte());
}
}

2.cpu占用率,代码如下:
package com.lml.ratetest;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;

public class CpuActivity extends Activity {
TextView tvCpu;
long total = 0;
long idle = 0;
double usage = 0;
UpdateThread thread;
Handler handler;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tvactivity);

tvCpu = (TextView) findViewById(R.id.tvRate);
handler = new Handler() {

@Override
public void handleMessage(Message msg) {
if (msg.what == 3) {
tvCpu.setText("cpu 占用率 : "+Math.round((Double)msg.obj));
}
}
};

thread = new UpdateThread();
thread.start();
}

@Override
protected void onDestroy() {
super.onDestroy();
thread.interrupt();
}

public class UpdateThread extends Thread {
public void run() {
while (!Thread.currentThread().isInterrupted()) {

Message msg = new Message();
msg.what = 3;
msg.obj=readUsage();
handler.sendMessage(msg);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}

public double readUsage() {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream("/proc/stat")), 1000);
String load = reader.readLine();
reader.close();

String[] toks = load.split(" ");

long currTotal = Long.parseLong(toks[2]) + Long.parseLong(toks[3])
+ Long.parseLong(toks[4]);
long currIdle = Long.parseLong(toks[5]);

if ((currTotal - total) * 100.0f
/ (currTotal - total + currIdle - idle) >= 0) {
this.usage = (currTotal - total) * 100.0f
/ (currTotal - total + currIdle - idle);
} else {
this.usage = 0;
}

this.total = currTotal;
this.idle = currIdle;
} catch (IOException ex) {
return 0.0;
}
return usage;
}
}

分享到:
评论

相关推荐

    vc 获取指定进程的cpu占用率和内存使用量

    总之,通过Windows API,VC++开发者可以轻松地获取和监控进程的CPU占用率和内存使用情况,这对于优化程序性能、排查问题或者构建系统监控工具都是非常有用的。在实际编程中,需要注意线程安全、资源释放以及错误处理...

    进程cpu占用率和内存使用大小获取

    在IT领域,尤其是在系统编程和性能分析中,了解如何获取进程的CPU占用率和内存使用情况至关重要。在C++环境中,这通常涉及到操作系统接口的使用,例如Windows API或POSIX系统调用。以下是对"进程CPU占用率和内存使用...

    go读取Linux下cpu占用率、cpu温度、内存占用率及磁盘占用率

    以上代码片段展示了如何使用Go语言读取Linux系统的CPU占用率、CPU温度、内存占用率和磁盘占用率。在实际应用中,这些函数可以被整合到一个统一的系统监控服务中,定期获取和记录这些数据,以便进行性能分析和故障...

    android 获取cpu使用率, 内存 实时数据

    在实际开发中,这些数据可以用于创建一个实时监控界面,显示设备的CPU使用率和内存使用情况。例如,可以每隔一段时间调用上述方法获取数据并更新UI。同时,也可以结合其他系统指标,如磁盘I/O、网络流量等,为用户...

    易语言画板动态显示CPU占用率

    在这个“易语言画板动态显示CPU占用率”项目中,我们主要探讨如何利用易语言来实时获取系统资源信息,并在画板上动态地展示CPU的使用情况。 首先,我们需要理解CPU占用率的概念。CPU占用率是指CPU正在处理的任务所...

    linux c程序获取cpu使用率及内存使用情况

    linux c程序获取cpu使用率及内存使用情况

    Qt-CPU占用率-内存信息-硬盘容量-已运行时间

    在本文中,我们将深入探讨如何使用Qt框架在C++环境下编写小程序,以便获取关于系统状态的重要信息,如CPU占用率、内存使用情况、硬盘容量以及程序的运行时间。Qt是一个功能强大的跨平台开发框架,广泛应用于GUI应用...

    获得系统的总信息,如CPU使用率,内存使用率等.如何取得像任务管理器的,进程CPU占用率啊_ZwQuerySystemInformation详解

    为了获取类似任务管理器显示的进程CPU占用率,你需要遍历`SystemProcessInformation`中的所有进程,累加它们的CPU时间,同时考虑到多核CPU的情况。这可能涉及到一些复杂的同步和计时问题,因为CPU时间是随着时间推移...

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

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

    WPF获取Windows系统内存占用和CPU占用

    在本文中,我们将深入探讨如何使用WPF(Windows Presentation Foundation)和Visifire库来实现一个功能,即实时监测并展示Windows操作系统的内存占用和CPU使用情况。Visifire是一款强大的数据可视化工具,它提供了...

    Linux下如何查看某一进程的CPU占用率_linux进程cpu使用率.zip

    在Linux操作系统中,掌握如何查看进程的CPU占用率是系统管理员和开发者必备的技能之一。这一过程涉及到对系统监控工具的使用,理解进程与CPU之间的交互,以及如何解析输出信息。下面将详细介绍如何在Linux环境下查看...

    java获取计算机cpu利用率和内存使用

    java 获取计算机cpu利用率和内存使用信息,需要的自己下载测试吧。

    c#获取系统和指定进程的CPU和内存占用率

    1. 获取系统CPU占用率: - 首先,创建两个`PerformanceCounter`实例,分别用于跟踪“% Processor Time”(CPU时间)的“Total”实例和“Idle”实例。 - 计算这两个值的差,得到的就是CPU的非空闲时间百分比,即CPU...

    freertos下的cpu占用率统计.zip

    在FreeRTOS中,CPU占用率可以通过计算任务循环运行的时间与总运行时间的比例来得到。以下是一种可能的实现方式: 1. **初始化**:在系统启动时,创建一个专门用于统计的定时器或者任务,记录当前时间戳,同时初始化...

    delphi 仿任务管理器,cpu使用率,内存使用

    delphi 仿任务管理器 获取每个进程的cpu使用率,内存使用情况,很好用,有源代码 ,delphi源码

    CPU占用率测试工具

    一、CPU占用率的含义与重要性 CPU占用率指的是处理器在给定时间内处于忙碌状态的百分比。它反映了CPU处理任务的能力和当前系统的工作负载。当CPU占用率长时间维持在高位,可能导致系统响应变慢,甚至出现卡顿现象。...

    windows server进程内存占用及CPU使用率自动监控并记录脚本

    总结来说,"windows server进程内存占用及CPU使用率自动监控并记录脚本"是一种实用的运维工具,它通过集成`Tasklist`和`WMIC`命令,定期收集并记录服务器上特定进程的资源使用情况,有助于快速定位和解决性能问题。...

    wpf实现的cpu与物理内存使用情况

    总的来说,通过利用WPF的强大功能和.NET Framework的系统性能计数器,我们可以创建一个直观的监控工具,实时显示CPU和物理内存的使用情况。这样的工具对开发者和系统管理员来说非常有用,可以帮助他们更好地理解系统...

    查看Wince下CPU占用率

    3. **内存管理**: 除了CPU占用率,内存使用情况也是需要关注的重点。在Wince中,内存不足可能导致系统运行缓慢或应用程序崩溃。任务管理器会显示当前内存的使用量和剩余量,以及每个进程的内存占用,这对于调整内存...

Global site tag (gtag.js) - Google Analytics