android内存检测

 /**
     * 开启线程检测软件可用内存情况,软件退出后, 调用System.exit(0)该线程才会停止 *
     * 
     * @param sleep
     *            每隔一段时间检测内存
     * @param standard
     *            内存超过多少比例报警
     */
    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();
    }

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。