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 값 확인

댓글 없음:

댓글 쓰기

Android Jetpack viewpager2

  Android Jetpack ViewPager2 기본 개념 및 샘플 코드 오늘은 안드로이드 개발에 있어서 굉장히 유용한 컴포넌트 중 하나인 ViewPager2에 대해 이야기해볼까 합니다. ViewPager2는 사용자 인터페이스에서 여러 화면을 좌우...