android内存检测

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.     * 开启线程检测软件可用内存情况,软件退出后, 调用System.exit(0)该线程才会停止 * 
  3.     *  
  4.     * @param sleep 
  5.     *            每隔一段时间检测内存 
  6.     * @param standard 
  7.     *            内存超过多少比例报警 
  8.     */  
  9.    public static void memoryWatch(final int sleep, final int standard)  
  10.    {  
  11.        if (sleep <= 0)  
  12.        {  
  13.            Log.e(TAG, "memoryWatch, invalid sleep = 0!");  
  14.            return;  
  15.        }  
  16.   
  17.        if (standard <= 0 && standard > 100)  
  18.        {  
  19.            Log.e(TAG, "memoryWatch, invalid standard percent = " + standard);  
  20.            return;  
  21.        }  
  22.   
  23.        new Thread(new Runnable()  
  24.        {  
  25.            @Override  
  26.            public void run()  
  27.            {  
  28.                Log.d(TAG, "memoryWatch, start thread!");  
  29.                while (true)  
  30.                {  
  31.                    long divisor = 1024 * 1024;  
  32.                    long maxMem = Runtime.getRuntime().maxMemory();  
  33.                    long totalMem = Runtime.getRuntime().totalMemory();  
  34.                    long freeMem = Runtime.getRuntime().freeMemory();  
  35.                    int percent = (int) (totalMem * 100 / maxMem);  
  36.                    Log.d(TAG, "memoryWatch" + ", app maxMem = " + maxMem  
  37.                            / divisor + "M, totalMem = " + totalMem / divisor  
  38.                            + "M, freeMem = " + freeMem / divisor  
  39.                            + "M, percent = " + percent);  
  40.                    if (standard <= percent)  
  41.                    {  
  42.                        if (freeMem / divisor <= 2)  
  43.                        {  
  44.                            Log.e(TAG, "memoryWatch" + ", app maxMem = "  
  45.                                    + maxMem / divisor + "M, totalMem = "  
  46.                                    + totalMem / divisor + "M, freeMem = "  
  47.                                    + freeMem / divisor + "M, percent = "  
  48.                                    + percent);  
  49.   
  50.                        }  
  51.                        else if (freeMem / divisor >= totalMem / (divisor * 2))  
  52.                        {  
  53.                            Log.e(TAG, "memoryWatch" + ", app maxMem = "  
  54.                                    + maxMem / divisor + "M, totalMem = "  
  55.                                    + totalMem / divisor + "M, freeMem = "  
  56.                                    + freeMem / divisor + "M, percent = "  
  57.                                    + percent + "%"  
  58.                                    + ", reset memory warn flag = true!");  
  59.                        }  
  60.                    }  
  61.   
  62.                    try  
  63.                    {  
  64.                        Thread.sleep(sleep);  
  65.                    }  
  66.                    catch (InterruptedException e)  
  67.                    {  
  68.                        Log.e(TAG, "memoryWatch, thread sleep exception : " + e);  
  69.                    }  
  70.                }  
  71.            }  
  72.        }).start();  
  73.    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值