android內(nèi)存檢測
來源:程序員人生 發(fā)布時間:2014-11-11 09:02:51 閱讀次數(shù):3239次
/**
* 開啟線程檢測軟件可用內(nèi)存情況,軟件退出后, 調(diào)用System.exit(0)該線程才會停止 *
*
* @param sleep
* 每隔1段時間檢測內(nèi)存
* @param standard
* 內(nèi)存超過量少比例報警
*/
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();
}
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈