释放内存实现
来源:互联网 发布:linux 软件安装 编辑:程序博客网 时间:2024/05/18 14:45
360等的释放内存功能其实就是杀后台进程
public static String realeseMM(Context context,String whitePkg){try {long releaseMM = 0; ActivityManager activityManager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE);//获取系统中所有正在运行的进程 List<RunningAppProcessInfo> appProcessInfos = activityManager .getRunningAppProcesses(); for (RunningAppProcessInfo appProcessInfo : appProcessInfos) { final String processName=appProcessInfo.processName; if(processName.startsWith(context.getPackageName())||processName.equals(whitePkg)||appProcessInfo.importance<ActivityManager.RunningAppProcessInfo.IMPORTANCE_PERCEPTIBLE){ continue; } MemoryInfo[] memoryInfo = activityManager.getProcessMemoryInfo(new int[]{appProcessInfo.pid}); if(memoryInfo[0].getTotalPss()==0){ continue; } releaseMM += memoryInfo[0].getTotalPrivateDirty()*1000; activityManager.killBackgroundProcesses(processName); } String releaseStr = FileUtil.FormetFileSize(releaseMM); return "为您优化了"+releaseStr+"内存";} catch (Exception e) {return null;}}
注意 {@link android.Manifest.permission#KILL_BACKGROUND_PROCESSES} 权限
其中,MemoryInfo中的获取内存三个方法的值对应如下
PSS getTotalPss
USS getTotalPrivateDirty
RSS getTotalSharedDirty
具体可以参考 http://blog.csdn.net/adaptiver/article/details/7084364 这里对PSS,USS,RSS的解释。
虽然我更倾向拿PSS的值,但是,USS的值和小米系统释放内存后获得值接近,当然也可能和人家的实现原理本身就不同,系统级应用的应用可能会使用forceStopPackage方法
- 释放内存实现
- 迎接2012之类的内存释放实现
- 设计实现C++内存的半自动释放
- 设计实现C++内存的半自动释放
- iOS 自动释放池内存实现
- ARC下如何实现内存释放
- ARC下如何实现内存释放
- 内存释放
- 释放内存
- 内存释放
- 内存释放
- 释放内存
- 内存释放
- 释放内存
- 内存释放
- 内存管理---内存释放
- 一个简单模拟内存分配和释放的实现
- 浅析Afinal框架FinalBitmap缓存lru内存释放实现
- 你必须非常努力,才能看起来毫不费力
- hdu 4679 Terrorist’s destroy 树形dp水题 (2013多校联合)
- Java从入门到精通——数据库篇之JAVA中的对Oracle数据库操作
- vc6 设置Courier New字体
- 指针详解
- 释放内存实现
- 多校第八场
- JSP获取服务器时间,页面倒计时显示
- UIPicker实现循环联动效果
- 银行业务调度系统
- 加强版的for循环
- VC++中使用_RecordSetPtr总结 .
- 20.从零开始学习C语言--补码
- 快速恢复区