代码来自 Internet,版权属于原作者,本人对作者所做的工作非常尊重。
我对代码稍做了修改,主要是将 Integer 改为 Long,并且将转换方法改为 Long.decode(String)。
import java.io.*;
import java.util.StringTokenizer;
public final class SystemMonitorUtils
{
public static long[] getMemInfo() throws IOException, InterruptedException
{
File file = new File("/proc/meminfo");
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(file)));
long[] result = new long[4];
String str = null;
StringTokenizer token = null;
while((str = br.readLine()) != null)
{
token = new StringTokenizer(str);
if(!token.hasMoreTokens())
continue;
str = token.nextToken();
if(!token.hasMoreTokens())
continue;
if(str.equalsIgnoreCase("MemTotal:"))
result[0] = Long.decode(token.nextToken());
else if(str.equalsIgnoreCase("MemFree:"))
result[1] = Long.decode(token.nextToken());
else if(str.equalsIgnoreCase("SwapTotal:"))
result[2] = Long.decode(token.nextToken());
else if(str.equalsIgnoreCase("SwapFree:"))
result[3] = Long.decode(token.nextToken());
}
return result;
}
//单处理器负荷,或者多处理器的总负荷。
public static float getCpuUsage() throws IOException, InterruptedException
{
File file = new File("/proc/stat");
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(file)));
StringTokenizer token = new StringTokenizer(br.readLine());
token.nextToken();
long user1 = Long.decode(token.nextToken());
long nice1 = Long.decode(token.nextToken());
long sys1 = Long.decode(token.nextToken());
long idle1 = Long.decode(token.nextToken());
Thread.sleep(500);
br = new BufferedReader(
new InputStreamReader(new FileInputStream(file)));
token = new StringTokenizer(br.readLine());
token.nextToken();
long user2 = Long.decode(token.nextToken());
long nice2 = Long.decode(token.nextToken());
long sys2 = Long.decode(token.nextToken());
long idle2 = Long.decode(token.nextToken());
return (float)((user2 + sys2 + nice2) - (user1 + sys1 + nice1)) / (float)((user2 + nice2 + sys2 + idle2) - (user1 + nice1 + sys1 + idle1));
}
}
我对代码稍做了修改,主要是将 Integer 改为 Long,并且将转换方法改为 Long.decode(String)。
import java.io.*;
import java.util.StringTokenizer;
public final class SystemMonitorUtils
{
public static long[] getMemInfo() throws IOException, InterruptedException
{
File file = new File("/proc/meminfo");
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(file)));
long[] result = new long[4];
String str = null;
StringTokenizer token = null;
while((str = br.readLine()) != null)
{
token = new StringTokenizer(str);
if(!token.hasMoreTokens())
continue;
str = token.nextToken();
if(!token.hasMoreTokens())
continue;
if(str.equalsIgnoreCase("MemTotal:"))
result[0] = Long.decode(token.nextToken());
else if(str.equalsIgnoreCase("MemFree:"))
result[1] = Long.decode(token.nextToken());
else if(str.equalsIgnoreCase("SwapTotal:"))
result[2] = Long.decode(token.nextToken());
else if(str.equalsIgnoreCase("SwapFree:"))
result[3] = Long.decode(token.nextToken());
}
return result;
}
//单处理器负荷,或者多处理器的总负荷。
public static float getCpuUsage() throws IOException, InterruptedException
{
File file = new File("/proc/stat");
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(file)));
StringTokenizer token = new StringTokenizer(br.readLine());
token.nextToken();
long user1 = Long.decode(token.nextToken());
long nice1 = Long.decode(token.nextToken());
long sys1 = Long.decode(token.nextToken());
long idle1 = Long.decode(token.nextToken());
Thread.sleep(500);
br = new BufferedReader(
new InputStreamReader(new FileInputStream(file)));
token = new StringTokenizer(br.readLine());
token.nextToken();
long user2 = Long.decode(token.nextToken());
long nice2 = Long.decode(token.nextToken());
long sys2 = Long.decode(token.nextToken());
long idle2 = Long.decode(token.nextToken());
return (float)((user2 + sys2 + nice2) - (user1 + sys1 + nice1)) / (float)((user2 + nice2 + sys2 + idle2) - (user1 + nice1 + sys1 + idle1));
}
}