为什么ios程序在模拟器运行时内存占用高
2015-01-26 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:117538
获赞数:517199
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注
展开全部
类UNIX操作系统(包括Linux, Mac OS X, iOS, Android)的默认行为都是惰性释放内存。
惰性释放的意思是:能不释放内存时就不要释放内存,直到有新程序请求内存,而剩余空间又不够用的时候才释放不用的内存。
假设系统有1GB内存,App A需要占用300M,App B需要占用400M, App C需要占用500M。
当A和B正在运行时,系统内存被用去了700M。此时退出A,系统不释放A占用的300M内存,所以内存占用依然是700M。此时A再次被启动,系统可以不必从头载入A了,只需要继续用刚刚的300M内存就行,速度就快了。(而且对于iOS和Mac OS X而言,可以直接回到刚刚A刚刚离开的地方)。如果再退出B,此时系统依然占用700M内存。这时运行C,系统发现剩余的300M不够用了,就把B原本占用的400M给清理掉,于是C就能运行了。
为什么不在程序退出的时候就清理掉内存呢?因为除了让你数字上看起来舒服一点以外,这样做没有好处啊!程序数据在内存里,下次再启动同一个程序就快得多,下次开另一个程序如果内存不够,那现场清理就行了,清理内存速度很快,并不影响什么。
这只是最简单的比方。其实在iOS里,后台程序的规则要比这个复杂一些,不过,基本的思路就是这样。所以内存占用多没什么不好的。
惰性释放的意思是:能不释放内存时就不要释放内存,直到有新程序请求内存,而剩余空间又不够用的时候才释放不用的内存。
假设系统有1GB内存,App A需要占用300M,App B需要占用400M, App C需要占用500M。
当A和B正在运行时,系统内存被用去了700M。此时退出A,系统不释放A占用的300M内存,所以内存占用依然是700M。此时A再次被启动,系统可以不必从头载入A了,只需要继续用刚刚的300M内存就行,速度就快了。(而且对于iOS和Mac OS X而言,可以直接回到刚刚A刚刚离开的地方)。如果再退出B,此时系统依然占用700M内存。这时运行C,系统发现剩余的300M不够用了,就把B原本占用的400M给清理掉,于是C就能运行了。
为什么不在程序退出的时候就清理掉内存呢?因为除了让你数字上看起来舒服一点以外,这样做没有好处啊!程序数据在内存里,下次再启动同一个程序就快得多,下次开另一个程序如果内存不够,那现场清理就行了,清理内存速度很快,并不影响什么。
这只是最简单的比方。其实在iOS里,后台程序的规则要比这个复杂一些,不过,基本的思路就是这样。所以内存占用多没什么不好的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
大雅新科技有限公司
2024-11-19 广告
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,...
点击进入详情页
本回答由大雅新科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询