欢迎来到天天文库
浏览记录
ID:34742381
大小:65.68 KB
页数:9页
时间:2019-03-10
《关于内存可用内存还有虚拟内存的一些详解和说明》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、内容大概: 1、itouch内存情况概述 2、可用内存 3、空闲内存以及释放内存的原理以及弊端 4、虚拟内存 itouch内存情况概述 废话不说,直接入题。 大家都知道itouch4只有256m内存(实际是247m),因此可用内存和虚拟内存一直都是大家比较关心的。下面我就来就大家的一些疑问发表一下我的看法。 首先,itouch4的内存是这样的,与电脑不同,是集成到a4处理器内部的。a4处理器一共有三层,包括1层是cpu,gpu,内存控制,高速缓存等一堆乱七八糟的东西,然后剩下两层就是内存,也叫ram。可能当时ipa
2、d1的a4太多了,或者由于大量生产价格低,因此itouch使用的就是ipad1用的a4(有拆解为证),也就只有256m的ram了。iphone4使用的也是a4,但是型号是不一样的,有人测定iphone4的处理性能会比itouch4差一点,也算是个补偿了吧。 除此之外,大家还要注意,itouch的内存是很多功能模块共用的,247m的ram要提供给cpu,同时还要提供gpu的显存,flash的缓存还有ramdisk。cpu也就是系统分得的部分再去掉系统进程占用的,最后留给用户的其实不多,一般来讲,可用内存100m左右时
3、正常的。由此可见,大家不要想在硬件上加内存了,除非换掉a4。 可用内存 接下来是关于可用内存的一些问题。大家一定要分清楚可用内存和空闲内存的关系。 空闲内存指的是当前已经被系统标记为空闲的部分,这里面没有存放任何有用的数据。 而可用内存指的是当进程申请的时候可以提供的最大内存,包括一些不太重要的进程占有的或者是一些可有可无的部分也算在内。 当你的前台进程请求的时候,系统会先提供空闲的,如果不够用了再释放那些不重要的给前台进程用。有时候系统不希望某进程占用太多的内存,回复的可用内存也不会太高。但是随着前台进程占用的越
4、来越多,系统还是会尽量提供的。因此最开始显示的可用内存完全有可能被突破。 就象你请客,告诉别人你可以接受的肯定不是你家房子实际容量的极限,假如你家使劲挤可以挤进去20个人,但是你可能会告诉他们我只能接受10人。但真的来了13个人的时候,难道你就真的拒绝那3个吗?肯定要让他们进来嘛! 因此,大家不要过于在意那个可用内存,更不用在意那个空闲内存的大小。 对于sbsetting里的状态栏可用内存,我还是建议大家开着。但是,注意,它显示的是系统告诉他的可用内存。而sbsetting的用户是root,也就相当于是你家亲戚。你
5、告诉亲戚和愿意提供给亲戚的空间肯定比外人,也就是mobile用户的进程(普通应用程序的都是)的高嘛,因此sbsetting显示的可用内存比一般应用程序的要高。我们一般无需在意,但是你要是发现它变成了个位数,还是赶快保存吧,房子可能真的要挤爆了。 空闲内存 对于空闲内存而言,说实话我还希望它小一点。为什么呢?你说它空在那里耗电有意义吗?还不如让他存点东西呢!其实系统就是这么做的。他会将一些可能会用到的硬盘(其实应当叫flash)里面的一些内容先放在这里,到时使用时候就会快。由于这里面的东西不重要,到时进程需要直接可以
6、给他。 大家有一个误区:在内存里,删除原本的数据非常简单,只需要将要删除的区块状态标记为空闲就可以了,不用改内部数据,几乎不要时间,并非我们想的非要用橡皮擦擦干净才能用,所以,使用当前空闲的内存缓存外存数据,这么做是很明智的。同时,这一部分会被标记为不活动。当你们用软件释放内存的时候,会发现不活动这一部分几乎全部被释放。 释放内存的原理以及弊端 ps 其实释放内存的原理就是这个进程不断的请求并且增大占用的内存,到达最大时突然删除全部自身占用部分是的内存之中出现大量空闲内存达到的。由于sbsetting是root用户
7、的,springboard是mobile用户的,所以用sbsetting释放有时会将springboard的释放掉甚至结束springboard导致注销,而使用ipa格式安装的内存优化软件不会。 由于释放内存会将之前缓存到ram里面的外存盘数据删除,当再次使用他们的时候需要重新从低速的flash里面加载,这也就是为什么释放内存之后滑倒搜索页面会卡,但是你多弄几次就好了的缘故,也就是说,我们没必要去释放内存,到时程序不够了系统会释放的。 一般来说,动不动就释放只会导致更慢和更卡。 而且为了省电和减少cpu使用和外存通
8、道的占用,将外存盘内容转存到ram是如同蚂蚁搬家极其缓慢的进行的,人家搬来其实很不容易的,也体谅一下他们嘛! 当然也有人发现释放之后更快了,什么原因呢? 可能是由于之前你使用的时候由于需要加载了很多服务,尤其是依赖mobilesubstrate之类的,在你不再使用的时候,他们没有被清理掉,而是继续占有内存甚至继续运行,主要是占用cpu导致的。 举个明显的例子
此文档下载收益归作者所有