`

Android手机内存的运行机制

 
阅读更多

使用android手机的用户可能都安装了任务管理的软件,使用android手机真的有必要安装结束任务的软件吗?大家在使用中也都发现了,很多软件在被结束后,马上就会又出现在任务列表里,或是稍等一会自己也会出现,任务管理不停的结束后台程序,也没见给手机的运行速度带来多少提升,这是为什么呢?

其实大家不用那么在意android手机剩余内存的大小。很多人都是把使用其他系统的习惯带到了android手机上,不是所有的智能手机系统都一样的。android大多数应用没有退出的设计其实是有道理的,这和系统对进程的调度机制有关系。如果你知道java,就能更清楚这机制了。其实和java的垃圾回收机制类似,系统有一个规则来回收内存。进行内存调度有个阀值,只有低于这个值系统才会按一个列表来关闭用户不需要的东西。当然这个值默认设置得很小,所以你会看到内存老在很少的数值徘徊。但事实上他并不影响速度。相反加快了下次启动应用的速度。这本来也是android的优势之一,如果人为去关闭进程,没有太大必要。特别是自动关进程的软件。

可能有人会说了,那为什么内存少的时候运行大型程序会慢呢?其实很简单,在内存剩余不多时打开大型程序,会触发系统自身的调进程调度策略,这是十分消耗系统资源的操作,特别是在一个程序频繁向系统申请内存的时候。这种情况下系统并不会关闭所有打开的进程,而是选择性关闭,频繁的调度自然会拖慢系统。

那么,进程管理软件到底还有存在的价值吗?其实还是有的,在运行大型程序之前,你可以手动关闭一些进程释放内存,可以显著的提高运行速度。但一些小程序,完全可交由系统自己管理。很多朋友还有个疑问,如果不关程序是不是会更耗电?这里也解释一下,android的应用在被切换到后台时,它其实已经被暂停了,并不会消耗cpu资源,只保留了运行状态。所以为什么有的程序切出去重新进入,还会到主界面。但是,一个程序如果想要在后台处理些东西,如音乐播放,它就会开启一个服务,服务可在后台持续运行,所以在后台耗电的也只有带服务的应用了。这个在进程管理软件里能看到,名字是service。所以没有带服务的应用在后台是完全不耗电的,没有必要关闭。这种设计本来就是一个非常好的设计,下次启动程序时,会更快,因为不需要读取界面资源,何必要关掉他们抹杀这个android的优点呢?

还有一点,为什么android应用看起来那么耗内存?大家知道,android上的应用是java,当然需要虚拟机,而android上的应用是带有独立虚拟机的,也就是每开一个应用就会打开一个独立的虚拟机。这样设计的原因是可以避免虚拟机崩溃导致整个系统崩溃,但代价就是需要更多内存。

至于为什么开了大程序或者开了好几个程序之后切换会变慢,具体分析如下:

已经开启了一个大程序,占用70%内存,如果再想运行一个程序,此时还需要50%的内存,则就需要一个从大程序占用的内存中释放或者压缩的过程,所以表现出来的就是慢一会儿。

已经开启了几个程序共占用内存80%,运行新程序时又需要20%的内存,系统内存因为没见过剩余0的时候,也就是应该剩一部分空闲内存,那么就需要从之前开启的这几个程序中选择一个或者几个来关闭,这一过程也需要耗费系统资源,所以会慢一会儿。也就是说你手动去结束程序的时候,就是替系统在释放内存,就算你不去结束,在需要内存的时候系统也会自动结束程序释放内存。

不在后台运行的程序(没服务的),即使不结束也不会耗电。在后台运行的(有服务的)程序,如一些播放器或实时监控的软件,自然会耗电。这就说明结束进程并不是没用,我们只需要看哪个带服务耗电哪个程序后台一直在运行,看服务就能看出来,这样的软件如果用不到的时候就结束了吧。

以QQ举例,正常的退出,会在进程管理里留下qq的运行过的状态,但不耗电不占 cpu,如果你只是切换出去(按房子键而不是退出)那么自然会耗电,因为程序还在运行,QQ还在线呢。

这里就有个要注意的地方了,虽然房子键和那个返回键都可以将程序切换出去,但是两者的效果差异是很大的,返回键可以视作程序已经退出了,而按房子键,则是将程序切换到了后台来运行,软件并没有退出哦!

以上这些设计都是为了确保了android的稳定性,正常情况下最多单个程序崩溃,但整个系统不会崩溃,也永远没有内存不足的提示出现。大家可能是被windows毒害得太深了,总想保留更多的内存,但实际上这并不一定会提升速度,相反却丧失了程序启动快的这一系统特色,得不偿失。大家不妨换种观念习惯来使用android系统。

分享到:
评论
1 楼 jacking124 2013-02-24  

相关推荐

    Android启动http运行vue程序.rar

    在Android平台上运行基于Vue.js开发的应用程序是一种将前端技术与移动平台结合的创新方式。Vue.js是一个轻量级、高性能的前端JavaScript框架,通常用于构建Web应用,但通过一些技术手段,我们也可以将其应用于...

    清理释放Android 安卓手机内存空间方法教程

    在日常使用Android手机的过程中,经常会遇到手机运行变慢、存储空间不足等问题。这些问题往往与手机内存管理不当有关。本文将详细介绍如何有效地清理并释放Android手机的内存空间,从而提高手机的运行速度和稳定性。...

    Android PC机摄像头摄像数据在Android手机上同步显示的源.zip

    该压缩包文件“Android PC机摄像头摄像数据在Android手机上同步显示的源.zip”涉及到的知识点主要集中在Android应用开发和视频流同步技术上。这里我们将深入探讨如何实现这一功能,以及可能涉及的关键技术和挑战。 ...

    android 手机卫士文档

    这些功能的实现通常需要深入了解Android系统的运行机制,以及熟悉相应的API接口。例如,手机加速功能可能需要关闭后台进程来释放内存;病毒查杀功能则需要调用专门的扫描接口检测系统中的恶意软件;流量监控需要使用...

    android获取手机内存大小

    在Android平台上,获取手机内存大小是一项常见的需求,无论是为了优化应用程序性能、监控设备资源使用情况,还是为了提供用户关于设备状态的信息。以下是一份详细的指南,涵盖了如何在Android中获取内存信息。 首先...

    android资料,运行原理过程

    本资料包"android资料,运行原理过程"专注于揭示Android系统的运行机制和开发流程。 一、Android系统运行过程 1. 启动流程:Android系统的启动始于Bootloader,接着是Kernel加载,然后是System Server启动,最后是...

    android手机正在运行的服务

    标题“android手机正在运行的服务”指的是在Android设备上查询并可能操作当前正在后台运行的所有服务。这通常涉及到系统级别的操作,可能需要特定的权限才能执行。 描述中提到的“获得当前android 手机正在运行的...

    android手机 OTG功能调试usb串口的demo源码程序,可在android studio运行调试

    综上所述,这个项目提供了在Android设备上利用OTG功能进行USB串口调试的实例,对于理解Android系统的USB通信机制以及开发相关应用具有很高的参考价值。开发者可以通过研究源码、在Android Studio中运行和调试,以...

    valgrind在android板上使用

    而在Android平台上,虽然大部分应用层代码是用Java编写的,并且由Dalvik或ART虚拟机管理内存,但对于那些通过JNI调用的本地代码(通常为C/C++),就需要借助如Valgrind这样的工具来检测潜在的内存问题。 #### 二、...

    Android OS手机平台的安全机制分析和应用研究

    ### Android OS手机平台的安全机制分析和应用研究 #### 摘要 随着移动通信技术的飞速发展,智能手机已经成为人们日常生活中不可或缺的一部分。与此同时,智能手机所面临的安全威胁也在不断升级,这不仅涉及到个人...

    android应用内存监控工具

    "Emmagee.apk"可能是一个专用于Android设备的内存监控应用,它允许用户直接在手机上查看和分析内存使用状况。 一、Android内存构成 Android系统的内存主要分为以下几个部分: 1. Dalvik/ART堆:这是Android应用运行...

    Android 提高篇 机制 分析

    ### Android提高篇机制分析 #### 一、设计方法论探讨之设计意图...综上所述,本文档旨在从设计意图的角度出发,全面分析Android系统的核心机制,帮助开发者更好地理解Android的内部工作原理,从而提升开发效率和质量。

    安卓系统内存管理机制

    对于ROM的检测,用户可以在“设置”中找到“SD卡和手机内存”的选项,查看“总容量”和“可用空间”。总容量是扣除系统占用和预留空间后的ROM大小,而可用空间则是安装了应用后剩余的ROM空间。 需要注意的是,不同...

    Android手机点餐系统

    Android手机点餐系统的客户端是用户与系统交互的界面,主要运行在各种Android设备上。它通常包含以下功能模块: 1. 菜单展示:客户端会显示餐厅的菜单,包括菜品图片、名称、价格等信息,让用户能够直观地选择菜品...

    Android手机远程监控源码.zip

    综上所述,"Android手机远程监控源码"项目涵盖了Android应用开发的多个重要方面,包括网络通信、多媒体处理、设备权限、用户界面设计以及安全性等。对于希望深入学习Android开发,尤其是对物联网和监控感兴趣的...

    Android 手机软件开发 实例 Java

    在Android手机软件开发中,Java语言是主要的编程工具,结合Android SDK,开发者可以构建功能丰富的应用程序。PhoneGap是一个开源框架,它允许开发者使用HTML、CSS和JavaScript来创建跨平台的移动应用,其中包括...

    android手机开发基本知识介绍

    在Android手机开发领域,了解和掌握基本知识是至关重要的。Android是一种开源的操作系统,由Google主导,用于智能手机、平板电脑和其他设备。以下是对Android手机开发关键知识点的详细讲解: 1. **开发环境搭建**...

    android手机屏幕共享软件

    总之,Android手机屏幕共享软件是Android开发中的一个重要辅助工具,它通过捕获、编码、传输和解码等一系列技术实现屏幕内容的实时分享。通过深入研究ASM_2_30这样的开源项目,开发者不仅可以提升自己的编程技能,还...

    基于LiME工具的Android手机动态内存提取.pdf

    为了克服不同Android手机内核版本的差异,文章重点分析了内核验证机制,并具体说明了如何修改内核配置和内核源码,以便编译出适用于特定环境的内存提取模块。通过这些方法,成功构建了一套适用于多个品牌和型号...

    android手机通讯录的毕业论文

    10. **版本兼容性**:由于Android系统的碎片化,开发过程中要考虑不同版本间的兼容性问题,确保应用能在多个Android版本上正常运行。 这篇毕业论文可能对以上知识进行深入探讨,分析Android手机通讯录的设计原理、...

Global site tag (gtag.js) - Google Analytics