Android memory Detection
/*** Enable the thread to check the available memory of the Software. After the software exits, call System. exit (0) this thread stops *** @ param sleep * and checks the memory at intervals * @ param standard * The percentage of memory exceeding the alarm */public static void memoryWatch (final int sleep, final int standard) {if (sleep <= 0) {Log. e (TAG, "memoryWatch, invalid sleep = 0! "); Return;} if (standard <= 0 & standard> 100) {Log. e (TAG, "memoryWatch, invalid standard percent =" + standard); return;} new Thread (new Runnable () {@ Override public void run () {Log. d (TAG, "memoryWatch, start thread! "); While (true) {long divisor = 1024*1024; long maxMem = Runtime. getRuntime (). maxMemory (); long totalMem = Runtime. getRuntime (). totalMemory (); long freeMem = Runtime. getRuntime (). freeMemory (); int percent = (int) (totalMem * 100/maxMem); Log. d (TAG, "memoryWatch" + ", app maxMem =" + maxMem/divisor + "M, totalMem =" + totalMem/divisor + "M, freeMem = "+ freeMem/divisor +" M, percent = "+ Percent); if (standard <= percent) {if (freeMem/divisor <= 2) {Log. e (TAG, "memoryWatch" + ", app maxMem =" + maxMem/divisor + "M, totalMem =" + totalMem/divisor + "M, freeMem = "+ freeMem/divisor +" M, percent = "+ percent);} else if (freeMem/divisor> = totalMem/(divisor * 2) {Log. e (TAG, "memoryWatch" + ", app maxMem =" + maxMem/divisor + "M, totalMem =" + totalMem/ Divisor + "M, freeMem =" + freeMem/divisor + "M, percent =" + percent + "%" + ", reset memory warn flag = true! ") ;}} Try {Thread. sleep (sleep);} catch (InterruptedException e) {Log. e (TAG, "memoryWatch, thread sleep exception:" + e );}}}}). start ();}