Android内存监测
28 February 2015
try{
Log.i("Memory","try");
int i = 0;
while(true){
Log.i("Memory","try "+i);
byte[] bytes = new byte[1024 * 1024 * i];
i++;
}
}catch (OutOfMemoryError e){
logAvailableMem();
}
1024 * 1024就是1M
java的内存管理,如果在循环体中每次创建1M,那么一直不会OOM,因为指向的是同一块1M的内存。只能像上面代码这样每次增量开辟新的内存空间。
Error是可以catch的,只不过一般程序中不去catch error,因为没有意义。
private void logAvailableMem(){
MemoryInfo mi = new MemoryInfo();
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
activityManager.getMemoryInfo(mi);
long availableMegs = mi.availMem / 1048576L;
Log.i("Memory", "" + availableMegs);
}
http://stackoverflow.com/questions/3170691/how-to-get-current-memory-usage-in-android
打印出来的就是M数。
-EOF-