通过终止进程来清理内存的方案是不合适的,理由如下:

1、 android 有自身的进程和内存管理机制,其设计规范是要保证程序尽可能快地启动,这就要求程序退出后仍然占用内存保存数据;

2、 android 的内存管理策略保证在新程序载入时有足够的内存,当内存不足时会自行关闭优先级低的进程来释放内存;

3、 进程数据长期缓存在内存,对于 android 来说不是缺陷,而是优势,它尽可能地确保程序的启动质量以提升用户体验,人们长期被强迫症困扰,一直误以为大量占用内存是低效的表现,这与人们长期使用桌面系统不无关系;

4、 我们的另一个误区是,占用内存耗电,其实不然!真正耗电的幕后推手是 CPU,反复清理内存需要CPU反复地工作,所以清理内存反而耗电;

网上一个形象的比喻:你在图书馆查资料,一种方案是把可能需要的资料全部从书架上取下来放到桌上,可能会有冗余,但不必经常去书架取书;另一种方案,书桌上只放当前正在查阅的资料,查完马上放回书架,这样虽然书桌上很干净,但你需要反复从书架上取书放书。这里书就好比内存,取书放书的动作好比 CPU 的工作。显然第一种方案更加高效和轻松。

一些靠谱的资料:

阐述为什么不需要终止进程来释放内存的原因http://android.nextapp.com/site/fx/doc/exit

两位谷歌工程师的建议:

Romain Guy :用户不要去做终止进程来释放内存的事,这与 android 的应用设计框架相悖,应该交由系统去做(这里的用户既是指使用 APP的用户,也是指APP本身或APP开发人员)https://groups.google.com/forum/#!topic/android-developers/G_D3pKnGLt0    http://stackoverflow.com/questions/2042222/close-application-and-launch-home-screen-on-android

Dianne Hackborn : 强烈反对使用 System.exit() 来终止程序,请不要如此设计你的 Android 应用 https://groups.google.com/forum/#!topic/android-developers/Y96KnN_6RqM

不要通过终止进程的方式清理内存相关推荐

  1. Linux进程通信的四种方式——共享内存、信号量、无名管道、消息队列|实验、代码、分析、总结

    Linux进程通信的四种方式--共享内存.信号量.无名管道.消息队列|实验.代码.分析.总结 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须 ...

  2. Ubuntu终止进程的方法(kill、pkill、killall)

    Ubuntu终止进程的方法(kill.pkill.killall) 博客分类:Ubuntu / Mac / Github / Aptana / Nginx / Shell / Linux 用户退出: ...

  3. Linux查看进程和终止进程的技巧

    1. 在LINUX命令平台输入1-2个字符后按Tab键会自动补全后面的部分(前提是要有这个东西,例如在装了tomcat的前提下,输入tomcat的to按tab). 2. ps 命令用于查看当前正在运行 ...

  4. python怎么清理垃圾_python清理内存

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 语言的内存管理是语言设计的一个重要方面. 它是决定语言性能的重要因素. 无论是c ...

  5. linux查看进程和终止进程

    1. 在LINUX命令平台输入1-2个字符后按Tab键会自动补全后面的部分(前提是要有这个东西,例如在装了tomcat的前提下,输入tomcat的to按tab). 2. ps 命令用于查看当前正在运行 ...

  6. Linux:进程管理 | 进程创建 | 进程终止 | 进程等待 | 进程替换

    文章目录 进程创建 fork 写时拷贝机制 进程终止 退出码 进程退出方法 进程等待 阻塞.非阻塞的等待 进程替换 替换函数 exec l exec lp exec le exec ve exec v ...

  7. android 8不能清理内存,安卓手机内存机制揭秘 清理释放RAM对提速无效

    相信很多安卓手机用户都经常使用一键清理或优化大师来对手机RAM进行清理,但是你有没有发现这样手机打开应用的速度反而更慢了.这里就要提到安卓系统的内存运行机制了,下面就来为大家分析一下. 当一个程序放到 ...

  8. Linux上如何清理内存缓存、缓冲与交换空间?

    [推荐阅读] 浅析linux内核网络协议栈--linux bridge 深入理解SR-IOV和IO虚拟化 深入linux内核架构--进程&线程 与其他类型的操作系统一样,GNU/Linux已经 ...

  9. linux 查看进程和终止进程

    1. 在LINUX命令平台输入1-2个字符后按Tab键会自动补全后面的部分(前提是要有这个东西,例如在装了tomcat的前提下,输入tomcat的to按tab). 2. ps 命令用于查看当前正在运行 ...

最新文章

  1. 排序算法之冒泡,选择,插入
  2. linux自动锁屏命令_如何冻结和锁定你的Linux系统?
  3. MySQL与oracle报错显示_Oracle中判断表是否存在再删除表避免报错与MySql和SqlServer的不同...
  4. ProxySQL MySQL MGR8配置
  5. php 如何实现关键字查找,php中如何通过关键字查找文件中包含该关键字的所有行内容呢...
  6. [vue-element]有阅读过ElementUI的源码吗?
  7. 信息学奥赛一本通 1075:药房管理 | OpenJudge NOI 1.5 23:药房管理
  8. 玉置成実(Nami Tamaki) -《もしも愿いが…》单曲[MP3]
  9. 【转】彻底理解安卓里的ldpi、mdpi、hdpi、xhdpi、xxhdpi文件夹含义
  10. Windows常见进程大全
  11. mysql数据库首次查询缓慢
  12. 智商、情商和逆商与程序员职业生涯发展
  13. hive 转拼音udf_自定义UDF函数:将汉字转换成拼音
  14. 基于flask的网页聊天室(一)
  15. 计算机表演赛qq输入法,25届计算机表演赛命题搜索之中国文学篇.doc
  16. 睡眠键重启计算机,Windows10进入睡眠模式后按任意键会自动重启怎么办
  17. uniapp开发app过程中集成友盟统计
  18. 《寻梦环游记》观后感
  19. C语言笔记(1.2版本,目前22000字)----未完待续
  20. AjaxUpLoad.js文件上传插件的使用

热门文章

  1. hyperledge工具-cryptogen
  2. Java反射在整个程序运行中的位置
  3. git reset HEAD^
  4. VMware vSphere 5.1 学习系列之:安装 vCenter Server
  5. 软件测试中的α测试、β测试和λ测试
  6. 汇编语言笔记10-CALL和RET指令
  7. 在GridView中添加按钮后,如何触发按钮的各种事件?
  8. STL之七:STL各种容器的使用时机详解
  9. 汇编语言--mul 指令
  10. 在malloc函数中为什么常用sizeof来设定内存分配的大小?