在上一篇文章中,小编为您详细介绍了关于《如何看待红米note3用联发科高端芯片Helio X10卖799?都有哪些型号的手机或手机cpu容易发生wifi断流》相关知识。本篇中小编将再为您讲解标题为什么样 iPhone 5s 什么样程序也不开的情况下内存占用高达 600 多 M?iPhone上APP内存cpu监控有什么样好办法。
为什么苹果⑤s内存在什么程序也不开的情况下使用率仍然那么高达到⑥⓪⓪多M,而且开再多程序不觉得卡。(附加问题:Windows的内存管理特色与之相反么?手机和桌面不同环境的内存管理策略差异大不大?)
某高票答案关于unix系内存管理的说法纯属胡说⑧道。
unix系用top之类命令看内存占用时,会发现它比windows之类系统内存占用更高;但这并不是什么“惰性释放内存”。真正的原因是:它会尽量把空闲内存拿来做缓存,以尽量减少外设访问,提高性能表现。
如果你是linux/windows的老用户,且经常切换使用linux/windows,就会发现,内存足够且无磁盘相关操作时,windows系统的硬盘灯仍然不停闪烁,而linux却可以几分钟甚至几⑩分钟都不闪①下。这就是cache算法的威力。
PS:大概win⑦之后,windows也有了类似机制,于是情况大有改善,硬盘灯也能做到⑩几秒才闪①次。
PS②:linux的确是不把buffers/cache空间报告为free内存空间的,见下面的链接;但buffers/cache中的①部分可视为free空间(即:如果程序申请更多内存,buffers/cache占用的部分内存可释放、然后分配给需要内存得程序使用)——之前我曾经很疑惑,为何linux内存管理明显比windows xp好得多得多,但未启动任何服务/进程的系统怎么比windows的内存占用量多那么多?后来才知道是把cache也算做已用内存了。至于IOS有没有这么老实,我就不知道了。
Linux Check Memory Usage
所谓“惰性释放内存”的说法,大概是把java虚拟机之类东西和传统操作系统的相关概念搞混了——之后的唧唧歪歪无非是文过饰非乃至强辞夺理罢了;然而行内哪个词能用在什么地方是有共识的。
java有垃圾收集机制,内存不用时不用程序显式删除,忘记即可;垃圾收集系统会自动定期清理;这个清理时机常常是“内存不够用时”,所以的确可以叫“惰性释放”——内存其实早该释放了,但既然还有空闲内存可用,那么不释放也没什么害处;不如攒①块儿,等不清理不行时①下子清理干净算了。
但ios、linux/unix、windows压根就没提供“垃圾收集”机制,也没有其它类似机制,自然也压根谈不上惰性不惰性了。
事实上,恰恰相反,unix系经典的“偷页”算法,反而是在内存未被占满之前,就把某些可能不再使用的内存页提前放到交换区(即所谓的“虚拟内存”):这反而是在“积极释放(物理)内存”了——不过,准确点说,这是“把暂时用不到的数据先存到磁盘空间”,从而使得“可用的物理内存”变多,并非“释放内存”。
此外,①旦占用内存的程序过多,就可能需要频繁在内存和磁盘之间来回倒腾数据,此时系统就会陷入“颠簸”状态。①旦进入这种状态,机器就会变得非常非常慢,程序也非常容易崩溃——毕竟磁盘访问速度比内存访问速度要低上好几个数量级。
————————————————————————
IOS/android等新兴操作系统的确设计有①个特殊机制。这个机制允许程序切到后台时保存其运行现场信息;之后,如果长时间不使用该程序、或者内存紧张时,系统就可以把这样的后台程序关闭,以便腾出更多内存空间。
当用户再次激活此程序时,如果程序还在内存中,自然切回前台就可以立即执行;但如果程序已经被清出内存,那就需要重新加载、并读取之前保存的运行现场信息,使程序恢复到之前状态继续运行——看起来就好像程序从未被关闭过①样。
这个机制显然并不适用于“(操作系统)什么都不开时就占用大量内存”的讨论;它也不叫什么“惰性释放内存”,而是①个大得多的题目:“程序状态持久化”。
只有状态可持久化的程序才可以在暂时不用时,随时由操作系统主动关闭,否则……等着用户骂娘吧。
这种“事先做好准备、以便在内存不足时可安全的主动杀死后台进程获取内存”的行为,显然是非常非常“激进”的,因为它并不是“延缓本该释放的内存释放”,而是“主动干掉不重要的进程,抢夺可用内存”——谁敢叫它“惰性“释放内存?
————————————————————————
至于特定操作系统占用的内存都做什么用了……那可就太复杂了。
首先,系统提供的每个功能都需要①定的内存支持,功能多,内存占用就多。换句话说,某些需求是硬性的,除非精简功能,否则……
其次,就好像 @pansz 的答案中提到的,商家并没有优化内存占用的动机。毕竟程序员比内存可贵得多了——哪怕①个程序会影响数亿部手机。
①个现成的例子就是java的垃圾回收机制:使用垃圾回收机制的程序,往往需要比手工管理内存的程序多好多倍的内存才能流畅运行(比如同样的小游戏,如果c/c++需要①⓪⓪M内存才能流畅运行的话,java很可能就得⑤⓪⓪M以上的内存才能有类似表现);但大家仍然宁可选择java,因为内存实在太便宜了……
第③,因为现在有虚拟内存技术,可随时把内存中暂时用不到的东西移到磁盘等大容量慢速存储器上,缓解物理内存不足问题;这也导致商家没有太大的动力去把内存占用优化到极致:反正虚存管理算法会自动解决问题。
更激进的,就是前面提到的“先让程序支持运行状态持久化、然后在必要时主动杀死进程释放资源”这个做法,可用来缓解“系统中跑了太多进程,导致资源不足”问题。
既然这类问题可被各种技术自动缓解……那我们干嘛还要付出大量时间、精力、金钱,冒着捅出大漏子的风险去优化它?
最后,可能是类似linux cache内存的“虚假占用”:看似内存占用很大,实则随时可腾出来挪作他用:这些“无理占用”的内存反而提高了系统的整体表现。
综上,①句话:多占点内存并不会立即导致明显的严重后果;而且除非对内存的需求已经达到某个极限(比如导致“颠簸”),否则总有各种机制能够自动缓解危机……而且,即便遇到了最坏情况,那么最经济的解决方案往往也是“换手机/升级硬件”而不是“做好优化”。
你选 左边的 track inspection head 可以查看期间任意时间点的具体占用信息 默认选了 display lastest 才导致你看不到\", \"extras\": \"\", \"created_time\": ①③⑨⑤⑦①③⑦⑥② · \"type\": \"answer
编后语:关于《为什么样 iPhone 5s 什么样程序也不开的情况下内存占用高达 600 多 M?iPhone上APP内存cpu监控有什么样好办法》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《苹果手机谁机型最好?玻璃背板加升级cpu和无线充电》,感兴趣的同学可以点击进去看看。
小鹿湾阅读 惠尔仕健康伙伴 阿淘券 南湖人大 铛铛赚 惠加油卡 oppo通 萤石互联 588qp棋牌官网版 兔牙棋牌3最新版 领跑娱乐棋牌官方版 A6娱乐 唯一棋牌官方版 679棋牌 588qp棋牌旧版本 燕晋麻将 蓝月娱乐棋牌官方版 889棋牌官方版 口袋棋牌2933 虎牙棋牌官网版 太阳棋牌旧版 291娱乐棋牌官网版 济南震东棋牌最新版 盛世棋牌娱乐棋牌 虎牙棋牌手机版 889棋牌4.0版本 88棋牌最新官网版 88棋牌2021最新版 291娱乐棋牌最新版 济南震东棋牌 济南震东棋牌正版官方版 济南震东棋牌旧版本 291娱乐棋牌官方版 口袋棋牌8399 口袋棋牌2020官网版 迷鹿棋牌老版本 东晓小学教师端 大悦盆底 CN酵素网 雀雀计步器 好工网劳务版 AR指南针 布朗新风系统 乐百家工具 moru相机 走考网校 天天省钱喵 体育指导员 易工店铺 影文艺 语音文字转换器