2014년 7월 9일 수요일

Android Memory 사용량



메모리 사용량 알기 1 - heap
Runtime runtime = Runtime.getRuntime();
long maxMemory = runtime.maxMemory();

long totalMemory = runtime.totalMemory();

long freeMemory = runtime.freeMemory();
Log.e"--------------------------------------");
Log.e("max memory: " + maxMemory /1024 + " KB");
Log.e("total memory: " + totalMemory / 1024 + " KB");
Log.e("free memory: " + freeMemory / 1024 + " KB");
Log.e("alloc memory: " + (totalMemory - freeMemory) / 1024 + " KB");
//Log.e("alloc memory: " + (totalMemory - freeMemory) + " byte");
Log.e("++++++++++++++++++++++++++++++++++++++");
~~~
totalMemory = runtime.totalMemory();
long freeMemory2 = runtime.freeMemory();
Log.e("--------------------------------------");
Log.e("total memory: " + totalMemory / 1024 + " KB");
Log.e("free memory: " + freeMemory2 / 1024 + " KB");
Log.e("alloc memory: " + (totalMemory - freeMemory2) / 1024 + " KB");
//Log.e("alloc memory: " + (totalMemory - freeMemory2) + " byte");
Log.e("diff memory: " + (freeMemory2 - freeMemory) + " byte");
Log.e("++++++++++++++++++++++++++++++++++++++");

//Double allocated = new Double((Debug.getNativeHeapAllocatedSize())/1048576.0);
//Double available = new Double((Debug.getNativeHeapSize())/1048576.0);
//Double free = new Double((Debug.getNativeHeapFreeSize())/1048576.0);
Double allocated = new Double((Debug.getNativeHeapAllocatedSize())/1024);
Double available = new Double((Debug.getNativeHeapSize())/1024);
Double free = new Double((Debug.getNativeHeapFreeSize())/1024);
//DecimalFormat df = new DecimalFormat();
//df.setMaximumFractionDigits(2);
//df.setMinimumFractionDigits(2);
//Log.e("debug.heap native: free " + df.format(free)+ "MB");
//Log.e("debug.heap native: allocated " + df.format(allocated) +"MB");
//Log.e("debug.heap native: available " + df.format(available) + "MB");
Log.e("debug.heap native: free " + free);
Log.e("debug.heap native: allocated " + allocated);
Log.e("debug.heap native: available " + available);
Log.e("++++++++++++++++++++++++++++++++++++++");

--------------------------------------------------------------------------------------------------------
- 메모리 사용량 알기 2

프로세스당 메모리 크기의 한계를 확인하려면 다음 API를 사용한다.
  • ((ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass();
Dalvik heap 영역의 메모리 정보를 알고 싶으면 다음 API를 사용한다.
  • Dalvik heap 영역 최대 크기(프로세스당 메모리 한계): Runtime.getRuntime().maxMemory()
  • Dalvik heap 영역 크기(footprint): Runtime.getRuntime().totalMemory()
  • Dalvik heap free 크기: Runtime.getRuntime().freeMemory()
  • Dalvik heap allocated 크기: totalMemory() 값에서 freeMemory() 값을 빼면 된다.
다음 API는 프로세스 메모리가 아닌 시스템 전체의 메모리 정보를 구할 때 쓴다. , native heap 정보에 대한 것이다.
  • ActivityManager.getMemoryInfo(ActivityManager.MemoryInfo outInfo)
 --------------------------------------------------------------------------------------------------------
- 메모리 사용량 알기 3
adb shell dumpsys meminfo PID(or package_name) – PSS 값 확인

댓글 없음:

댓글 쓰기

구글 I/O 2025의 주요 발표

 구글 I/O 2025: 혁신의 현장 안녕하세요! 오늘은 구글 I/O 2025에 대해 이야기해보려고 해요. 매년 많은 기술 애호가들과 개발자들이 기다리는 이 행사에서 어떤 혁신이 있었는지, 그리고 앞으로의 기술 발전에 대해 알아보도록 할게요. 😊 구...