其他安卓手机内存占用太大大

linux 内存占用过大分析
1、使用 free -g 查看内存使用情况:
2、查看进程占用的内存情况:
ps aux|awk '{sum+=$6} END {print sum/1024}'
结果发现占用了 17G
3、查看内存分配情况:cat /proc/meminfo
那slab是什么呢?slab是Linux操作系统的一种内存分配机制。其工作是针对一些经常分配并释放的对象,如进程描述符等,这些对象的大小一般比较小,如果直接采用伙伴系统来进行分配和释放,不仅会造成大量的内碎片,而且处理速度也太慢。而slab分配器是基于对象进行管理的,相同类型的对象归为一类(如进程描述符就是一类),每当要申请这样一个对象,slab分配器就从一个slab列表中分配一个这样大小的单元出去,而当要释放时,将其重新保存在该列表中,而不是直接返回给伙伴系统,从而避免这些内碎片。slab分配器并不丢弃已分配的对象,而是释放并把它们保存在内存中。当以后又要请求新的对象时,就可以从内存直接获取而不用重复初始化。具体为:采用伙伴算法分配内存时,每次至少分配一个页面。但当请求分配的内存大小为几十个字节或几百个字节时应该如何处理?如何在一个页面中分配小的内存区,小内存区的分配所产生的内碎片又如何解决?Linux2.0采用的解决办法是建立了13个空闲区链表,它们的大小从32字节到132056字节。从Linux2.2开始,MM的开发者采用了一种叫做slab的分配模式,该模式早在1994年就被开发出来,用于Sun Microsystem Solaris 2.4操作系统中。Slab的提出主要是基于以下考虑:1) 内核对内存区的分配取决于所存放数据的类型。例如,当给用户态进程分配页面时,内核调用get free page()函数,并用0填充这个页面。 而给内核的数据结构分配页面时,事情没有这么简单,例如,要对数据结构所在的内存进行初始化、在不用时要收回它们所占用的内存。因此,Slab中引入了对象这个概念,所谓对象就是存放一组数据结构的内存区,其方法就是构造或析构函数,构造函数用于初始化数据结构所在的内存区,而析构函数收回相应的内存区。但为了便于理解,你也可以把对象直接看作内核的数据结构。为了避免重复初始化对象,Slab分配模式并不丢弃已分配的对象,而是释放但把它们依然保留在内存中。当以后又要请求分配同一对象时,就可以从内存获取而不用进行初始化,这是在Solaris 中引入Slab的基本思想。实际上,Linux中对Slab分配模式有所改进,它对内存区的处理并不需要进行初始化或回收。出于效率的考虑,Linux并不调用对象的构造或析构函数,而是把指向这两个函数的指针都置为空。Linux中引入Slab的主要目的是为了减少对伙伴算法的调用次数。2) 实际上,内核经常反复使用某一内存区。例如,只要内核创建一个新的进程,就要为该进程相关的数据结构(task_struct、打开文件对象等)分配内存区。当进程结束时,收回这些内存区。因为进程的创建和撤销非常频繁,因此,Linux的早期版本把大量的时间花费在反复分配或回收这些内存区上。从Linux2.2开始,把那些频繁使用的页面保存在高速缓存中并重新使用。3) 可以根据对内存区的使用频率来对它分类。对于预期频繁使用的内存区,可以创建一组特定大小的专用缓冲区进行处理,以避免内碎片的产生。对于较少使用的内存区,可以创建一组通用缓冲区(如Linux2.0中所使用的2的幂次方)来处理,即使这种处理模式产生碎片,也对整个系统的性能影响不大。4) 硬件高速缓存的使用,又为尽量减少对伙伴算法的调用提供了另一个理由,因为对伙伴算法的每次调用都会“弄脏”硬件高速缓存,因此,这就增加了对内存的平均访问次数。Slab分配模式把对象分组放进缓冲区(尽管英文中使用了Cache这个词,但实际上指的是内存中的区域,而不是指硬件高速缓存)。因为缓冲区的组织和管理与硬件高速缓存的命中率密切相关,因此,Slab缓冲区并非由各个对象直接构成,而是由一连串的“大块(Slab)”构成,而每个大块中则包含了若干个同种类型的对象,这些对象或已被分配,或空闲,如图6.12所示。一般而言,对象分两种,一种是大对象,一种是小对象。所谓小对象,是指在一个页面中可以容纳下好几个对象的那种。例如,一个inode结构大约占300多个字节,因此,一个页面中可以容纳8个以上的inode结构,因此,inode结构就为小对象。Linux内核中把小于512字节的对象叫做小对象。实际上,缓冲区就是主存中的一片区域,把这片区域划分为多个块,每块就是一个Slab,每个Slab由一个或多个页面组成,每个Slab中存放的就是对象。2,通过slabtop命令查看slab缓存信息通过slabtop我们看到Linux系统中有大量的dentry cache占用内存,那dentry cache是什么呢?首先,我们知道inode对应于物理磁盘上的具体对象,而dentry是一个内存实体,其中的d inode成员指向对应的inode,故可以把dentry看成是Linux文件系统中某个索引节点(inode)的链接,这个索引节点可以是文件,也可以是目录。而dentry cache是目录项高速缓存,是Linux为了提高目录项对象的处理效率而设计的,它记录了目录项到inode的映射关系。3,结合storm服务分析当前服务器是storm集群的节点,首先想到了storm相关的工作进程,strace一下storm的worker进程发现其中有非常频繁的stat系统调用发生,而且stat的文件总是新的文件名:[@storm-yd8325 ~]
进一步观察到storm的worker进程会在本地目录下频繁的创建、打开、关闭、删除心跳文件,每秒钟一个新的文件名:
[@storm-yd8325 ~]# sudo strace -fp 31984 -e trace=open,stat,close,unlink
总结:storm进程频繁的文件io操作,导致了dentry_cache占用了系统太多的内存资源。
4,系统的自动slab缓存回收
在slab缓存中,对象分为SReclaimable(可回收)和SUnreclaim(不可回收),而在系统中绝大多数对象都是可回收的。内核有一个参数,当系统内存使用到一定量的时候,会自动触动回收操作。内核参数:
vm.min_free_kbytes = 836787
1)代表系统所保留空闲内存的最低限。
在系统初始化时会根据内存大小计算一个默认值,计算规则是:
min_free_kbytes = sqrt(lowmem_kbytes * 16) = 4 * sqrt(lowmem_kbytes)(注:lowmem_kbytes即可认为是系统内存大小)
另外,计算出来的值有最小最大限制,最小为128K,最大为64M。
可以看出,min free kbytes随着系统内存的增大不是线性增长,因为随着内存的增大,没有必要也线性的预留出过多的内存,能保证紧急时刻的使用量便足矣。
2)min free kbytes的主要用途是计算影响内存回收的三个参数 watermark[min/low/high]
(1) watermark[high] & watermark [low] & watermark[min],各个zone各一套
(2)在系统空闲内存低于 watermark[low]时,开始启动内核线程kswapd进行内存回收(每个zone一个),直到该zone的空闲内存数量达到watermark[high]后停止回收。如果上层申请内存的速度太快,导致空闲内存降至watermark[min]后,内核就会进行direct reclaim(直接回收),即直接在应用程序的进程上下文中进行回收,再用回收上来的空闲页满足内存申请,因此实际会阻塞应用程序,带来一定的响应延迟,而且可能会触发系统OOM。这是因为watermark[min]以下的内存属于系统的自留内存,用以满足特殊使用,所以不会给用户态的普通申请来用。
(3)三个watermark的计算方法:
watermark[min] = min free kbytes换算为page单位即可,假设为min free pages。(因为是每个zone各有一套watermark参数,实际计算效果是根据各个zone大小所占内存总大小的比例,而算出来的per zone min free pages)
watermark[low] = watermark[min] * 5 / 4
watermark[high] = watermark[min] * 3 / 2
所以中间的buffer量为 high - low = low - min = per_zone_min_free_pages * 1/4 。因为 min_free_kbytes
= 4* sqrt(lowmem_kbytes) ,也可以看出中间的buffer量也是跟内存的增长速度成开方关系。
(4)可以通过/proc/zoneinfo查看每个zone的watermark
Node 0, zone
pages free
3)min free kbytes大小的影响
min_free_kbytes 设的越大,watermark的线越高,同时三个线之间的buffer量也相应会增加。这意味着会较早的启动kswapd进行回收,且会回收上来较多的内存(直至watermark[high]才会停止),这会使得系统预留过多的空闲内存,从而在一定程度上降低了应用程序可使用的内存量。极端情况下设置 min_free_kbytes 接近内存大小时,留给应用程序的内存就会太少而可能会频繁地导致OOM的发生。
min_free_kbytes 设的过小,则会导致系统预留内存过小。kswapd回收的过程中也会有少量的内存分配行为(会设上PF_MEMALLOC)标志,这个标志会允许kswapd使用预留内存;另外一种情况是被OOM选中杀死的进程在退出过程中,如果需要申请内存也可以使用预留部分。这两种情况下让他们使用预留内存可以避免系统进入deadlock状态。
5,最终结果
最终查明, slab cache 占用过多属于正常问题,并且当内存到达系统最低空闲内存限制的话,会自动触发kswapd进程来回收内存,属于正常现象。
注:测了一下,当调整完min free kbytes值大于系统空闲内存后,kswapd进程的确从休眠状态进入运行态,开始回收内存。
根据我们跑的storm服务做出如下调整:
vm.vfs_cache_pressure = 200
该文件表示内核回收用于directory和inode cache内存的倾向;缺省值100表示内核将根据pagecache和swapcache,把directory和inode cache保持在一个合理的百分比;降低该值低于100,将导致内核倾向于保留directory和inode cache;增加该值超过100,将导致内核倾向于回收directory和inode cache。
Linux系统内存占用90%以上——解决方法
解决linux服务器内存占用过大问题
linux内存一直占满问题
linux内存利用率很高的原因分析
解决linux buffer/cache 消耗内存过高引发的问题
查看Linux磁盘及内存占用情况
查看LINUX进程内存占用情况
linux 进程内存占用高分析
Linux内存占用情况分析
Linux下Java项目占用内存问题的分析
没有更多推荐了,
(window.slotbydup=window.slotbydup || []).push({
id: "5865575",
container: s,
size: "300,250",
display: "inlay-fix"SD卡的其他占了很大的内存,怎么删除_百度知道
SD卡的其他占了很大的内存,怎么删除
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
小米MIUI知道合伙人
MIUI,为发烧而生
知道合伙人
官方主页:http://www.miui.com/
SD卡中的其他是你的游戏数据包,导肮数据包,软件附带的数据……统称为用户数据及缓存。唯一安全的清理垃圾方式是通过文件管理中的文件清理功能进行清理垃圾。
潇雨天涯知道合伙人
采纳数:56
获赞数:788
最简单的方法就是安装一个 “安卓优化大师”
里面有一个垃圾清理
最后有一个大文件清理
可以扫描出来那些文件比较大
比较占内存
walqq456123知道合伙人
walqq456123
采纳数:13
获赞数:24
你是的占内存具体是怎么样的哪里占内存了?
占SD卡的内存
就是你SD卡你是下载了什么把内存都占用了?虽然缓存什么的也占但是不会占太多,要是是缓存的话就在应用管理器中点开你下载的软件下面有个清楚缓存。
不知道,就下载了一些歌曲和图片还有软件
你是root了刷机了,刷机文件的也占空间,大概是这些占的空间在,还有是不是下了默认地图在里面也是占很多空间的,你的手机是不是淘宝上面买的?如果是网店买的话别人一般把地图都放在里面占空间,还有如果你不嫌麻烦的话就去下载个ES文件浏览器可以慢慢看那些文件不要就删除,或是按照上面的那位说的直接下载安卓优化大师也行。
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。|  
|  
|  
|  
|  
只需一步,快速开始
查看: 2233|回复: 6
高配内存占用过大ctd
主题帖子积分
中级玩家, 积分 104, 距离下一级还需 146 积分
中级玩家, 积分 104, 距离下一级还需 146 积分
本帖最后由 aliwset 于
20:34 编辑
k+3200的8g海盗船内存。。。跑游戏都是满帧数,但是就是玩命跳出。。尤其是大地图,一般副本图和房间里面都没问题,看了看进程,每次进游戏都是飙升到3g然后必跳。。听说内存使用超过3.x g就会跳出?
也尝试过修改enblocal.ini,安装enb(用了enb后的确内存能压缩到比较小,但是无限加载。。。)修改skyrim.ini等等等等各种方法均没有任何效果。。
这是跳出截图,关于上面写的我也尝试过了。没什么用。。。求一个可行的解决办法orz
本帖子中包含更多资源
才可以下载或查看,没有帐号?
主题帖子积分
中级玩家, 积分 248, 距离下一级还需 2 积分
中级玩家, 积分 248, 距离下一级还需 2 积分
中高档配置了& &估计还是MOD不兼容
主题帖子积分
中级玩家, 积分 104, 距离下一级还需 146 积分
中级玩家, 积分 104, 距离下一级还需 146 积分
中高档配置了& &估计还是MOD不兼容
根据弹出的信息可以确定不是mod的关系了
主题帖子积分
生亦何欢 死亦何悲
游戏精英, 积分 4983, 距离下一级还需 4017 积分
游戏精英, 积分 4983, 距离下一级还需 4017 积分
本帖最后由 我是失魂落魄 于
01:43 编辑
如果mod OK 那就(应该用enb了吧 高配。。。) enb不是可以减少内存占用嘛(貌似可以降低一半)&&内存怪吓人的&&
enb设置 ini设置 排序啊等等。。。
仅供参考 勿喷
PS 这张图已经看了不下10遍了
主题帖子积分
中级玩家, 积分 104, 距离下一级还需 146 积分
中级玩家, 积分 104, 距离下一级还需 146 积分
如果mod OK 那就(应该用enb了吧 高配。。。) enb不是可以减少内存占用嘛(貌似可以降低一半)&&内存怪吓 ...
跳之前是没安enb的,你说的我也都尝试过了orz
主题帖子积分
生亦何欢 死亦何悲
游戏精英, 积分 4983, 距离下一级还需 4017 积分
游戏精英, 积分 4983, 距离下一级还需 4017 积分
enb设置再试试吧
其它我也不懂了
主题帖子积分
中级玩家, 积分 104, 距离下一级还需 146 积分
中级玩家, 积分 104, 距离下一级还需 146 积分
enb设置再试试吧
http://bbs.3dmgame.com/thread--1.html
无果。。。内存还是一路飙升至3g然后跳出。。。不过还是谢谢你的回答qwq
Powered byiphone6 plus其他内存怎么清理这个其他占用了太多的内存
互联网 & 发布时间: 15:14:39 & 作者:佚名 &
很多果粉不爽这个“其他”占用了太多的内存,能不能将其删除呢?下文将会介绍清理iphone6 plus其他内存的方法,不会的朋友可以好好看看哦
  iphone6 plus其他怎么清理?怎么删除?下文将会介绍清理iphone6 plus其他内存的方法,很多果粉不爽这个&其他&占用了太多的内存,能不能将其删除呢?请试一试下文的方法吧。
  首选,浏览一下iPhone上所有Messages聊天记录,删除那些不再需要的。要是用户经常和朋友分享大量的图片、GIF、和视频等,Messages聊天记录信息量会很大,因此用户最好先查看一下。
  接下来,查看一下各个应用占据了多少空间。用户可以打开设置、一般,然后选择使用、存储空间管理来查看。用户可以很清楚地看到哪个应用占据了很大的空间,从而决定手动清理缓存或是卸载再安装。
  要是这些都失败了,用户可以将手机数据和设置备份上传至iCloud,然后恢复出厂设置,然后从iCloud中安装备份数据。这一条很管用,因为iCloud实际上不会备份用户设备上的&其它&数据,因此这个神秘的&其它&数据便会消失。
大家感兴趣的内容
12345678910
最近更新的内容求助,怎么办?其他占用内存那么大【macbookair吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:155,900贴子:
求助,怎么办?其他占用内存那么大收藏
樱花日语air,完成动漫答题,立即获得动漫礼包+免费体验动漫公开课,学习日语力荐樱花日语,站在顶点的日语培训机构.
其它能存占用了将近90G
怎么清理?求办法或软件链接
app下载Mr.clean
那不是内存吧。。。
clean my mac 3
clean my mac 2.0.6:慎用!!!
登录百度帐号

我要回帖

更多关于 电脑内存占用太大 的文章

 

随机推荐