智能手机硬件加速及虚拟内存利弊分析

上传人:公**** 文档编号:413700765 上传时间:2023-02-13 格式:DOC 页数:5 大小:30.50KB
返回 下载 相关 举报
智能手机硬件加速及虚拟内存利弊分析_第1页
第1页 / 共5页
智能手机硬件加速及虚拟内存利弊分析_第2页
第2页 / 共5页
智能手机硬件加速及虚拟内存利弊分析_第3页
第3页 / 共5页
智能手机硬件加速及虚拟内存利弊分析_第4页
第4页 / 共5页
智能手机硬件加速及虚拟内存利弊分析_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《智能手机硬件加速及虚拟内存利弊分析》由会员分享,可在线阅读,更多相关《智能手机硬件加速及虚拟内存利弊分析(5页珍藏版)》请在金锄头文库上搜索。

1、智能手机硬件加速及虚拟内存利弊分析1. debug.sf.hw=O,修改为debug.sf.hw=1,此步骤为打开硬件加速2. dalvik.vm.heapsize=24m,修改为 dalvik.vm.heapsize=32m,此步骤为修改 虚拟机大小为 32m上面的第二点注意,这是修改 虚拟机内存,不是修改虚拟内存! 这 2 者完全 不同!最近论坛里关于修改安卓系统2个参数的帖子很火,说修改后可以提升手机的性 能。修改后有说好用的,也有说不好用的,好用的把楼主捧为了神,不好用的把 楼主骂个半死,其实科学嘛,总有好处有坏处的,我们只要好好分析,就能得知 我们为什么要改,还有修改后可以得到什么样

2、的益处。捧别人为神或者踩别人为 泥都对事情发展没有好处。关于修改的内容,主要是修改 2 个参数:debug.sf.hw=0,修改为debug.sf.hw=1,此步骤为打开硬件加速dalvik.vm.heapsize=24m,修改为 dalvik.vm.heapsize=32m,此步骤为修改虚拟机大小为 32m我来跟你解释这2个参数有什么作用,并且说说为什么我做ROM的时候不修改 这2个参数。1. dalvik.vm.heapsize=24m,修改为 dalvik.vm.heapsize=32m,此步骤为修改 虚拟机大小为 32m安卓系统 实际上,就是建立在linux内核上的一个JAVA系统,了

3、解JAVA的 同学应该知道,在运行JAVA程序的时候,需要在每个程序上建立一个虚拟机, 以获得内存的分配,优点是假设某个程序崩溃了,系统只要关闭那个虚拟机就可 以了,不会影响其他程序,缺点是很耗内存,因为你每开一个程序,就要新开一 个虚拟机。举个例子,打开程序A的时候,程序A就自动向系统申请1份虚拟机内存,然 后不关闭,再开一个程序B,程序B要求向系统申请3份内存,假设虚拟机 内存设置为24M,那么这2个程序合共占用了内存1X24 + 3X24 = 96M。假 设虚拟机内存设置为 32M ,则这 2 个程序合共占用了内存 1X32 + 3X32 =128M那么,究竟修改好,还是不修改好呢?假设

4、你的机子里,平常只运行一些小程序,例如QQ、看书软件、小游戏等,那 么建议你不要修改,就使用标准的24M,因为足够用,并且防止运行程序过多, 而产生崩溃。那是不是越小越好呢?当然不是,因为分配给程序的内存过小,有 可能因为软件申请不到足够的内存,而运行不流畅。假设平常经常运行大型程序,例如大型3D游戏等,则可以稍微调大一些,以使 大型程序得到足够的内存来运行,可以更流畅。 那是不是越大越好呢,当然不 是,因为调的太大,其他程序就分配不到内存,无法运行了。google 为什么要把系统的虚拟机设置为 24M 呢? 由于有些软件吃内存,也有 一些小软件不吃内存,我觉得这是属于一个中庸的设计,由于没法

5、全部偏向大型, 也没法全部偏向小型,那就中庸吧。我们都知道,华为C8650的机身内存RAM是256M,这是固定的,给一个虚 拟机用 24M 还是 32M ,自己决定吧,不过,对于某些程序控,在手机里装一 大堆需要开启服务的软件的筒子们,建议还是别改了,否则开机的时候需要启动 一大堆程序,最后弄得机子都开不了。我们来和常用的windows系统对比一下,假设同样有256M内存windows 系统的内存机制是:来了一个程序,程序告诉系统,我要 100M ,然 后来了第二个程序,第二个程序说,我要 150M, 这个时候,内存已经被使用 100M + 150M = 250M,剩余 6M 。然后来了第三个

6、程序,第三个程序说,我要 50M, 由于不够分给他,系统就崩 溃了。安卓系统的内存机制是:来了一个程序,程序告诉系统,我要100M,然后来 了第二个程序,第二个程序说,我要150M,这个时候,内存已经被使用100M + 150M = 250M,剩余 6M 。然后来了第三个程序,第三个程序说,我要50M,这个时候系统自动关闭最先 申请内存程序的虚拟机,或者最次要程序的虚拟机,他把第一个程序关闭了,系 统获得了 100M的内存,加上剩余的6M,合共106M,分配给第三个程序50M, 系统继续运行。第一个是 三个和尚,最后大家都没水吃第二个是 牺牲小我,完成大我。当然,系统在实际运用中,比上面复杂多

7、了,例如安卓还加入了“隐藏机制”,只 要不运行的程序,都自动马上释放内存,windows系统出现3个程序抢内存的 情况,也加入了“等待机制”等,有兴趣的话可以自己研究。转载一段 隔壁的论坛的文章: 安卓的原理.不用在意内存的大小 (以下 全部都是转载) 不用在意剩余内存的大小。其实很多人都是把使用其他系统的习惯带过来来了。an droid大多应用没有退出 的设计其实是有道理的,这和系统对进程的调度机制有关系。如果你知道java, 就能更清楚这机制了。其实和java的垃圾回收机制类似,系统有一个规则来回 收内存。进行内存调度有个阀值,只有低于这个值系统才会按一个列表来关闭用 户不需要的东西。当然

8、这个值默认设置得很小,所以你会看到内存老在很少的数 值徘徊。但事实上他并不影响速度。相反加快了下次启动应用的速度。这本来就 是 android 标榜的优势之一,如果人为去关闭进程,没有太大必要。特别是自动 关进程的软件。到这里有人会说了,那为什么内存少的时候运行大型程序会慢呢?其实很简单, 在内存剩余不多时打开大型程序,会触发系统自身的调进程调度策略,这是十分 消耗系统资源的操作,特别是在一个程序频繁向系统申请内存的时候。这种情况 下系统并不会关闭所有打开的进程,而是选择性关闭,频繁的调度自然会拖慢系 统。所以,论坛上有个更改内存阀值的程序可以有一定改善。但改动也可能带来一些问题,取决于值的设

9、定。 那么,进程管理软件有无必要呢?有的。就是在运行大型程序之前,你可以手动 关闭一些进程释放内存,可以显著的提高运行速度。但一些小程序,完全可交由 系统自己管理。谈到这里,可能有的朋友会问,如果不关程序是不是会更耗电。 我就说说an droid后台的原理,你就明白了。an droid的应用在被切换到后台时, 它其实已经被暂停了,并不会消耗 cpu 资源,只保留了运行状态。所以为什么 有的程序切出去重进会到主界面。但是,一个程序如果想要在后台处理些东西, 如音乐播放,它就会开启一个服务。服务可在后台持续运行,所以在后台耗电的 也只有带服务的应用了。这个在进程管理软件里能看到,标签是servic

10、e。至于 广播什么的我就不涉及了。所以没有带服务的应用在后台是完全不耗电的,没有 必要关闭。这种设计本来就是一个非常好的设计,下次启动程序时,会更快,因 为不需要读取界面资源,何必要关掉他们抹杀这个 android 的优点呢? 还有一 个。为什么 android 一个应用看起来那么耗内存。大家知道, android 上的应用 是java,当然需要虚拟机,而an droid上的应用是带有独立虚拟机的,也就是每 开一个应用就会打开一个独立的虚拟机。这样设计的原因是可以避免虚拟机崩溃 导致整个系统崩溃,但代价就是需要更多内存。以上这些设计确保了 an droid的稳定性,正常情况下最多单个程序崩溃,

11、但整个 系统不会崩溃,也永远没有内存不足的提示出现。大家可能是被 windows 毒害 得太深了,总想保留更多的内存,但实际上这并不一定会提升速度,相反却丧失 了程序启动快的这一系统特色,很没必要。大家不妨按我说的习惯来用用这个系 统。最后推荐一款进程管理软件, systempanel, market 上能搜到,界面友好启 动快,功能也不错,用于手动关闭进程很好的软件。祝大家玩机愉快,这系统开十天半个月都没问题,不是 windows。 以上内容均为转帖过来,至于为什么开了大程序或者开了好几个程序之后切换会 变慢,我的理解如下1大程序A已经开启,占用70%内存,如果再想运行一个B,需要50%的内

12、存, 则就需要一个将 A 从内存中释放或者压缩的过程,所以表现出来的就是慢一会 儿2. ABCDE共占用内存80%,运行新程序Z需要20%的内存,系统内存因为 没见过剩余0的时候,也就是应该剩一部分空闲内存,那么就需要从AE这几 个程序中选择一个或者几个来关闭,这一过程也需要耗费系统资源,所以会慢一 会儿3. 也就是说你手动去杀程序的时候,就是替系统在释放内存,就算你不杀,在需 要内存的时候系统也会自动释放。4. 不在后台运行的程序(没服务的),即使不杀也不会耗电。在后台运行的(有 服务的)程序,如后台放歌,当然会耗电。5. 不是说杀进程没用,不然作者就不会推荐进程管理软件了。哪个带服务耗电哪

13、 个后台一直在运行,看服务就能看出来,这样的该杀。6, 以qq举例,正常的退,会在进程管理里留下qq的运行状态,但不耗电不占 cpu,如果你只是切换出去(按小房子而不是退出)那么自然会耗电,因为程序 还在运行。第二个参数:debug.sf.hw=O,修改为debug.sf.hw=1,此步骤为打开硬件加速首先,我要说明,这个世界上没有免费的午餐,假设通过那么简单的设置就可以 提升性能,那厂商为什么不做呢?由此可知这个玩意实在效用有限,或者是需要 和其他工具配合使用!这个设置的作用到现在为止还没有一个标准的说法来说明这是用来干嘛的, 开启硬件加速? 开启什么硬件加速?难道是3D性能?难道不开启就没

14、有3D性能吗?开启CPU某些特殊性能?这个也不靠谱啊!获取CPU性能关键看指令集!而 且,为什么不一开始就使用呢?开启其他硬件性能?改了难道音箱变大声了?改了难道30W像素的摄像头可以照500W 了?改了难道内存由256M变成512M 了?要么就是让CPU 一直保持100%性能的状态?那样性能是提升了,但是电池效 果却下降了! (觉得这个解释还稍微靠谱一些)我个人认为,这个设置的作用,目的是开启或者结束硬件厂商的优化指令,因为 每个厂商对硬件的设置不一样,肯定在某些位置设置了一个优化指令,并且通过 这个设置来开启。例如,google的工程设计标准里,设计了某个版本的手机设置标准是256M内 存

15、, 并且告诉所有手机生产厂商: 如果你是按照我的标准来制作, 那么 debug.sf.hw= 就设置为 0,如果你要自己更改部分硬件设置,那么就设置为 1 , 但是设置为 1 后,你得指向一个文件,告诉系统究竟修改了一些什么了。 某手 机厂商为了手机速度更快,增加内存到512M,并且设置了一个文件,告诉系统, 这个手机是用512M内存的,不是256M。然后某个人开始使用带有优化指令的手机, 过了一段时间,又换了新手机后, 发现配置接近,但是性能却不一样, 于是对比原来手机的文件,发现了这个指 令,于是进行修改了,并且很有兴致的告诉别人,但是实际上,他用的新手机并 没有设置优化指令啊,开启了以后等于没开启,甚至由于系统找不到优化指令,但是设置又告诉他有优化指令,弄得系统也不知所措,运行更慢,或者出现问 题但是,由于这个人的“新发现”,弄得这个简单的 0 和 1 成为了一代传说(或者 是一代流言)特别声明: 红字部分仅为个人猜测。由于手头资料有限,可能本人有错漏,欢迎指正。有人说,现在所有的自制ROM都改了这2个参数了,其实,至少我的ROM从 来都不改的,有兴趣可以用我的ROM研究一下。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号