메모리 사용량 알기 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 값 확인
댓글 없음:
댓글 쓰기