일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 이클립스
- 브로드케스트 리시버
- 자바
- opengl
- 서비스
- 네트워크
- 바닐라루시
- 걸스데이
- 뮤직비디오
- 영어
- opencv
- Linux
- 배다해
- Java
- 인텐트
- 쓰레드
- Intent
- 네트워크보안
- Android
- HTML
- error
- 안드로이드
- Eclipse
- xml
- Looper
- 엑티비티
- 레인보우
- TOEIC
- 토익
- rainbow
- Today
- Total
W.A 저장소
Get Process Info( CPU Usage / Memory Usgae) 본문
쓸모없이 돌아가는 나쁜 프로세스를 죽이기 위한 노력.
우선 그런 프로세스들을 찾기 위해서 ActivityManager를 사용하여 현재 실행중인 어플들의 목록을 받아오는 작업부터 시작했다. 보시면은 아시겠지만
while(rAppIterator.hasNext()) {
runningAppProcess = rAppIterator.next();
ProcessInfo processInfo = new ProcessInfo(runningAppProcess.processName, runningAppProcess.pid);
taskProcessInfo.add(processInfo);
Log.d(TAG, runningAppProcess.processName);
}위와 같은 방법을 사용하여 기본적으로 현재 실행되고 있는 프로세스의 PID값을 가져왔다. 이 정보 이외에서 다른 정보들이 많이 있었다.
하지만 이러한 정보들로는 내가 알아보기가 힘든 내용들이 많이 있었다.
Dirty memory? 이것이 무엇이란 말인가???
그래서 하게 된 방법이 직접 시스템에 /proc 에 있는 정보를 사용해서 받아오기로 했다.
그림을 보시면 아시겠지만 여러 정보들을 가지는 파일과 PID를 가지는 폴더를 보실 수 있습니다.
또한 /proc/stat , /proc/cpuinfo, /proc/meminfo, /proc/stat 에서 여러 정보를 얻을 수가 있습니다.
그리고 /proc/[pid]/status에서도 각 프로세스별로 여러가지 정보를 얻을 수 있습니다.
하지만 여기서 얻는 정보는 각 프로세스들의 cpu점유율을 알기가 힘이 들었습니다. 그래서 사용하게 되것이 linux system의 top command를 사용하여 각 프로세스의 PID를 사용하여 cpu점유율과 메모리점유율을 얻기로 하였습니다.
String cmd = "top -n 1";
String line;
process = runtime.exec(cmd);
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
while ((line = br.readLine()) != null) {
String segs[] = line.trim().split("[ ]+");
if( segs[0].equalsIgnoreCase(Integer.toString(tempProcessInfo.getPid())) ) {
tempProcessInfo.setCpuUsage(segs[1]);
tempProcessInfo.setMemUsage(divideMemInfo(segs[5]));
break;
}
}위와 같은 방법으로 아래와 같이 프로세스의 Cpu점유율과 메모리점유율을 알 수 있다. 이 외에도 여러가지 많은 정보를 얻을 수 있다.
이러한 방법을 사용하게 된다면은 이러한 정보들 말고도 무궁무진한 것을 얻어올수 있을것이라 생각된다.
'Programing' 카테고리의 다른 글
위젯 클릭 시 퍼미션 문제. (0) | 2010.11.09 |
---|---|
움직이는 위젯(App Widget) (2) | 2010.11.05 |
Get PackageName(패키지 이름 받아오기) (0) | 2010.10.28 |
Immortal Service(죽지않는 서비스) (5) | 2010.10.28 |
OpenCV for android 사용기 #1 (0) | 2010.09.15 |