首页 > 范文大全 > 正文

Android内存机制有玄机

开篇:润墨网以专业的文秘视角,为您筛选了一篇Android内存机制有玄机范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

很多android手机或平板用户都喜欢安装高级任务管理器或ES任务管理器等软件,因为安装后可以在桌面添加一个“一键结束所有进程”的插件,没事点一点就能让可用内存始终保持在较高的容量上面。而Android设备厂商也抓住了用户渴求大内存的心理,纷纷推出动辄2GB内存的新品(据悉三星Galaxy S4甚至会配备3GB内存,容量直逼笔记本)。那么,Android设备真的需要如此之高的内存吗?有必要没事就结束所有进程吗?

独特的进程管理策略

想知道内存对Android系统的影响,首先我们需要了解其独特的进程管理策略。

Linux(Android源于Linux)会在进程活动停止后就自动结束该进程,而Android则会将你所有运行过的进程都保留在内存中,方便你下次运行时可以快速调用,让你觉得很爽,直到系统需要更多内存时才会结束其中的某些进程以释放内存。那么,Android系统是靠什么来判定不同类型进程的终止优先级呢?

原来,Android系统会对评估每一个进程的重要性并为其赋予大小不一的“oom_adj”阀值,这个值越大,意味着该进程被系统终止的优先级越高。比如,“当内存小于300MB时,结束所有‘oom_adj’值大于3的进程。”Android系统通常会给进程分为6类(见表),其中前台进程的“oom_adj”值为0,意味着它永远不会被终止,而其它类型的进程是否关闭,就取决于当前系统的剩余内存了。

需要注意的是,前台进程和后台进程可以相互转换。比如你正在用浏览器程序上网,那浏览器就是前台进程。但你按Home键返回主页后,浏览器进程就变成后台进程了,在必要的时候就会被终止。举个例子,长按Home键可以切换近期运行的程序,但有时候可以切换到原来暂停的状态(从后台转至前台),有时候却变成重新运行了(为了启动新程序中途被进程管理机制给干掉了)。

极度消耗内存的应用

Android应用的本质就是Java,需要虚拟机。这意味着你每打开一个应用都会同步打开一个独立的虚拟机。这种设计的好处是可以避免某个应用(虚拟器)的崩溃而导致整个系统的崩溃,但代价就是更加消耗内存。

理论上讲Android系统的进程管理策略还是蛮人性化的,但碰上对内存极度渴求的应用(见图),再大的内存容量也“伤不起”。按照上文的思路,当我们点击某个新应用的图标之际,系统首先会判断该程序对内存的占用量,如果大于当前可用内存容量就会触发系统自身的进程管理策略,选择性地关闭“oom_adj”值过高的进程。这是个十分消耗系统资源的操作,特别是在一个程序频繁向系统申请内存的时候。

因此你会发现,同样是玩某个大型3D游戏,大内存手机点一下就进去了(剩余内存足够),但小内存手机却会卡死一段时间(系统正在调度进程资源,关闭不需要的进程)。

有必要 莫强求

总之,大内存对Android设备的好处就是减少系统自动启动进程调度机制的次数,可以保留更多应用的运行状态,让你长时间体验到启动/切换时嗖嗖快的感觉,而小内存设备在运行一段时间后就显得力不从心了。从这个角度来看,大内存还是有必要的。但是,在Android 4.x系统中,1GB内存基本就够用了,在价格相差不多时可以优先考虑2GB的型号,不必刻意强求。至于需不需要使用进程管理软件,2GB内存的设备基本没有必要,小内存设备在运行大型应用前最好可以清理一下,手动帮系统减负。