package AndroidApi; import android.util.Log; class Monitoring implements Runnable { public void run() { while (!Thread.currentThread().isInterrupted()) { try { Thread.sleep(100); } catch (InterruptedException s) { Thread.currentThread().interrupt(); } AndroidDebug.printVaryMemory(); } } } public class AndroidDebug { private static boolean m_bIsDebug = false; /** * 设置调试模式 * * @param bIsDebug */ public static void setMode(boolean bIsDebug) { m_bIsDebug = bIsDebug; } /** * 是否调试模式 * @return */ public static boolean isDebug() { return m_bIsDebug; } /** * 打印信息 * * @param strTxt */ public static void println(String strTxt) { if (m_bIsDebug) { System.out.println(strTxt); } } /** * 打印信息 * * @param strTxt */ public static void Log(String strTag, String strTxt) { if (m_bIsDebug) { Log.i(strTag,strTxt); } } /** * 强制回收垃圾,可用于检测析构函数,检测未使用对象是否有 */ public static void gc() { if (m_bIsDebug) { System.gc(); } } /** * 打印堆总量 */ public static void printTotalMemory() { Runtime r = Runtime.getRuntime(); AndroidDebug.println("Total memory is :" + r.totalMemory()); } /** * 打印堆剩余量 */ public static void printFreeMemory() { gc(); // 执行强制回收以获得准确的剩余量 Runtime r = Runtime.getRuntime(); AndroidDebug.println("Free memory is :" + r.freeMemory()); } /** * 打印堆变化量 */ static long longPre = 0; public static void printVaryMemory() { gc(); // 执行强制回收以获得准确的剩余量 Runtime r = Runtime.getRuntime(); long longNow = r.freeMemory(); if (longNow > longPre) { AndroidDebug.println("Free memory -> :" + (longNow - longPre)); longPre = longNow; } else if (longNow < longPre) { AndroidDebug.println("Free memory <- :" + (longPre - longNow)); longPre = longNow; } } /** * 监控内存 * * @param bIsOpen */ private static Thread m_pThread = null; public static void setMonitore(boolean bIsOpen) { if (bIsOpen) { if (null == m_pThread) m_pThread = new Thread(new Monitoring()); m_pThread.setDaemon(true); m_pThread.start(); } else { if (null != m_pThread) { m_pThread.interrupt(); m_pThread = null; } } }
-
|