不要通过终止进程的方式清理内存
2013-07-05 14:34
225 查看
通过终止进程来清理内存的方案是不合适的,理由如下:
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、 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
相关文章推荐
- 不要通过终止进程的方式清理内存
- [转]进程间通过共享内存方式传输大数据
- 正在进行调试的Web服务器进程已由Internet信息服务(IIS)终止。可以通过在IIS中配置应用程序池Ping设置来避免这一问题。有关更多详细信息,请参见“帮助”
- 通过web service的方式上传附件和下载附件,以及内存溢出问题
- 进程线程的启动与终止方式的比较
- 通过WriteProcessMemory改写进程的内存
- Java第七课 Java的多线程程序进程和线程的概念,实现多线程的两种方式,线程同步的原理,线程的死锁,运用wait和notify来实现producer - consumer关系,线程终止的两种情况。
- 内存的分配方式, 进程和线程的区别, 进程间通信方式有哪些?各自有哪些优缺点?
- 通过statm监控进程内存
- 内存分配的原理__进程分配内存有两种方式,分别由两个系统调用完成:brk和mmap(不考虑共享内存)
- 内存分配的原理__进程分配内存有两种方式,分别由两个系统调用完成:brk和mmap(不考虑共享内存)
- 通过/proc/PID/status查看进程内存占用情况
- [学习笔记]进程终止的5种方式
- linux下进程通信方式--共享内存
- 内存分配的原理__进程分配内存有两种方式,分别由两个系统调用完成:brk和mmap(不考虑共享内存)
- 如何通过proc目录查看每个进程的内存和swap的占用
- Nagios通过匹配监控进程CPU及内存使用
- 内存分配的原理__进程分配内存有两种方式,分别由两个系统调用完成:brk和mmap(不考虑共享内存)
- 进程间通过共享内存通信
- 通过脚本的方式杀tomcat进程(shell脚本),shell中将一个文件的内容读出赋值给一个变量