» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

[其他] 有没有高手从技术角度解释下ios的后台机制?

引用:
原帖由 c月光咖啡 于 2012-9-11 10:44 发表
ffcactus 给我说说安卓四个推送机制是什么,各自优点和缺陷是什么
我怎么知道?我又不是开发安卓的。


TOP

引用:
原帖由 ffcactus 于 2012-9-11 10:46 发表

好想我说反了, 安卓反倒是走的container 那一套。
赶紧回到你j2ee的座位上,别拿PC的机制跟安卓的机制混为一谈,container ,搞笑吧,服务器怎么去找手机ip。手机ip随着接入基站改变的。
你连container估计都没搞清楚呢



TOP

引用:
原帖由 ffcactus 于 2012-9-11 10:51 发表


我怎么知道?我又不是开发安卓的。
那你就没资格说我一派胡言


TOP

引用:
原帖由 c月光咖啡 于 2012-9-11 10:53 发表

那你就没资格说我一派胡言
我来说一下安卓的内存管理机制吧。安卓设计之初CPU性能、ROM读写性能低等问题,作为一个开放性系统,为了匹配市场上更多的硬件,采用了内存预读的方式解决CPU性能不足的问题。具体做法就是根据用户行为将可能会用的软件尽量预读进内存里面,当切换到已经预读的程序时,CPU就无需加载软件直接开始运算软件。这移动设备上是绝对不用使用预读这种愚蠢的机制的,没有那么多电给你耗。而且你自己说了CPU性能低、ROM读写能力低,那还预读干嘛? 最合理的算法当然是保留最新运行的程序,释放最早运行的程序。 当运行需要内存的时候,将会释放掉挂起的进程、部分预读的程序以提供足够的运行空间。

这就是为什么安卓用户的内存永远都塞得满满的原因。要严重是不是这个原因很简单,重新开机,然后运行一个程序, 你看看有没有预读的功能或服务就好了。你要不要验证下?如果你用高端机可能感觉不到,但是如果你用512M或者更低的内存的时候这种机制你就会感觉很明显。比如你在玩了大型软件后退会桌面,你会发现桌面的插件在重新启动。没错,你桌面的插件被释放了。重新启动的速度很抓狂吧,那是因为CPU太慢了。安卓用户不是内存不够,而是CPU太慢,如果你的CPU足够快,那么就是256M的内存也能爽到飞起,当然你的手机是不会用i7或者至强处理器的。最一派胡言的地方就在于此。CPU太慢?以CPU的频率刷新整个1GB内存需要多少时间? 不到1秒。 真正的瓶颈是手机的持久存储器。这是任何一个有些许硬件常识的人都应该知道的。
至于这个机制为什么会导致运行大型程序会卡,平时使用也卡。
第一,我没有读过预读内存的逻辑,不负责地估计是:当你链接网络时,系统认为你会使用互联网相关的程序,然后加载所有带有互联网接入权限的软件……OK,在国内,基本上90%的程序都会有。
第二,运行所需的内存,是刚好分够给你的,比如你的程序需要50M,就给你分51M,运行所需内存突然要求增加,CPU就要重新释放和申请新的内存,这是一个不小的开销。释放和申请内存几乎不要时间。
第三,系统释放的进程,可能正是你需要的,就像你运行大型软件,然后随时切回桌面。系统不认为桌面插件是不可释放的,然后咔嚓了,切回桌面的时候就得重新载入。系统怎么可能会释放桌面管理进程?哪个傻逼系统会这么设计?

TOP

posted by wap, platform: iPhone
引用:
原帖由 @VEVAN  于 2012-9-11 10:34 发表
话说android也是有推送的 比如instagram的通知...
当然 可能国内的环境(gf w) 国产软件都不怎么用吧...
苹果是自己花了几十亿搞云端服务器,所有推送都是收上去自己管理。

google自己的推送服务器就给自己那几个软件用,比如gmap,gtalk。还有诸如whatsapp这样的公司也有自己的推送服务。在猴机也好用。国产软件各自为战,qq,微信这种完全是挂在后台不断的接受消息,是假推送。如果有苹果一样的统一管理,猴机也能有差不多的服务,可惜猴机碎片化太严重,市场不规范,导致不同软件体验差距太大,不可能有统一的体验。

说简单点就是国产软件们在ios可以靠苹果的服务器推,到猴上就完蛋了

TOP

呵呵厚,长知识了!!!!!

TOP

何况这推送与卡机有什么关系? 混淆视听。

TOP

我来说一下安卓的内存管理机制吧。安卓设计之初CPU性能、ROM读写性能低等问题,作为一个开放性系统,为了匹配市场上更多的硬件,采用了内存预读的方式解决CPU性能不足的问题。具体做法就是根据用户行为将可能会用的软件尽量预读进内存里面,当切换到已经预读的程序时,CPU就无需加载软件直接开始运算软件。这移动设备上是绝对不用使用预读这种愚蠢的机制的,没有那么多电给你耗。而且你自己说了CPU性能低、ROM读写能力低,那还预读干嘛? 最合理的算法当然是保留最新运行的程序,释放最早运行的程序。 当运行需要内存的时候,将会释放掉挂起的进程、部分预读的程序以提供足够的运行空间。

--不预读的话当你需要用的时候再才慢慢预读,会更久。RAM空闲和填满耗电差距不大


这就是为什么安卓用户的内存永远都塞得满满的原因。要严重是不是这个原因很简单,重新开机,然后运行一个程序, 你看看有没有预读的功能或服务就好了。你要不要验证下?如果你用高端机可能感觉不到,但是如果你用512M或者更低的内存的时候这种机制你就会感觉很明显。比如你在玩了大型软件后退会桌面,你会发现桌面的插件在重新启动。没错,你桌面的插件被释放了。重新启动的速度很抓狂吧,那是因为CPU太慢了。安卓用户不是内存不够,而是CPU太慢,如果你的CPU足够快,那么就是256M的内存也能爽到飞起,当然你的手机是不会用i7或者至强处理器的。最一派胡言的地方就在于此。CPU太慢?以CPU的频率刷新整个1GB内存需要多少时间? 不到1秒。 真正的瓶颈是手机的持久存储器。这是任何一个有些许硬件常识的人都应该知道的。

--加载资源考虑过没?查找资源,再从ROM读取进来的时间考虑过没?本来就资源有限,任意CPU开销都会很容易导致应用卡顿。这是手机,不是台式机。

至于这个机制为什么会导致运行大型程序会卡,平时使用也卡。
第一,我没有读过预读内存的逻辑,不负责地估计是:当你链接网络时,系统认为你会使用互联网相关的程序,然后加载所有带有互联网接入权限的软件……OK,在国内,基本上90%的程序都会有。
第二,运行所需的内存,是刚好分够给你的,比如你的程序需要50M,就给你分51M,运行所需内存突然要求增加,CPU就要重新释放和申请新的内存,这是一个不小的开销。释放和申请内存几乎不要时间。

--同上,没有考虑过加载资源

第三,系统释放的进程,可能正是你需要的,就像你运行大型软件,然后随时切回桌面。系统不认为桌面插件是不可释放的,然后咔嚓了,切回桌面的时候就得重新载入。系统怎么可能会释放桌面管理进程?哪个傻逼系统会这么设计?

--你自己用过没?找台256内存的跑个大型应用,切回桌面。一开始是只有壁纸,一段时间后按钮才出来。

弱爆了

TOP

posted by wap, platform: SAMSUNG (Galaxy Nexus)
引用:
原帖由 @ffcactus  于 2012-9-10 15:18 发表
什么情况, 像周大这样的人难道还是IT人士? 不可能吧。
我还以为是周大的儿子……

TOP

我来说一下安卓的内存管理机制吧。安卓设计之初CPU性能、ROM读写性能低等问题,作为一个开放性系统,为了匹配市场上更多的硬件,采用了内存预读的方式解决CPU性能不足的问题。具体做法就是根据用户行为将可能会用的软件尽量预读进内存里面,当切换到已经预读的程序时,CPU就无需加载软件直接开始运算软件。这移动设备上是绝对不用使用预读这种愚蠢的机制的,没有那么多电给你耗。而且你自己说了CPU性能低、ROM读写能力低,那还预读干嘛? 最合理的算法当然是保留最新运行的程序,释放最早运行的程序。 当运行需要内存的时候,将会释放掉挂起的进程、部分预读的程序以提供足够的运行空间。

--不预读的话当你需要用的时候再才慢慢预读,会更久。RAM空闲和填满耗电差距不大
你预读时CPU不耗电, 持久存储器不耗电?
你自己说“CPU就要重新释放和申请新的内存,这是一个不小的开销”,那预读通常要多读几个,而且不可避免的会出现误读,当用户真正开启应用程序的时候, 系统要释放预读错的应用程序,这申请释放内存岂不是完全可以抵消你预读的优势?  就连PC上都没有采用预读的机制,手机上还采用? 不过我也说了, 你自己检验一下你没开启的服务系统会不会自动帮你打开就好了。 预读比cache的效果上差远了。由于预读必然要占用cache的空间, 所以不会出现预读。


这就是为什么安卓用户的内存永远都塞得满满的原因。要严重是不是这个原因很简单,重新开机,然后运行一个程序, 你看看有没有预读的功能或服务就好了。你要不要验证下?如果你用高端机可能感觉不到,但是如果你用512M或者更低的内存的时候这种机制你就会感觉很明显。比如你在玩了大型软件后退会桌面,你会发现桌面的插件在重新启动。没错,你桌面的插件被释放了。重新启动的速度很抓狂吧,那是因为CPU太慢了。安卓用户不是内存不够,而是CPU太慢,如果你的CPU足够快,那么就是256M的内存也能爽到飞起,当然你的手机是不会用i7或者至强处理器的。最一派胡言的地方就在于此。CPU太慢?以CPU的频率刷新整个1GB内存需要多少时间? 不到1秒。 真正的瓶颈是手机的持久存储器。这是任何一个有些许硬件常识的人都应该知道的。

--加载资源考虑过没?查找资源,再从ROM读取进来的时间考虑过没?本来就资源有限,任意CPU开销都会很容易导致应用卡顿。这是手机,不是台式机。
估计你连文件系统怎么运行的都不明白吧, 你的程序从来都不会与持久存储器直接打交道,如果它要查找一个文件,它浏览的不是去读持久存储器上的文件目录,而是这个目录在RAM中的副本。如果他要读一个文件,它也不会去读持久存储器上的数据, 而是先将这些数据读到RAM中, 然后再读。应用程序的卡顿几乎都是发生在IO瓶颈上,发生在CPU上几乎不存在。你就算评估CPU测算圆周率的时候,运行其他应用程序一样不怎么卡。再说一次,瓶颈永远都是在IO上, 除非你用的是火星技术。

至于这个机制为什么会导致运行大型程序会卡,平时使用也卡。
第一,我没有读过预读内存的逻辑,不负责地估计是:当你链接网络时,系统认为你会使用互联网相关的程序,然后加载所有带有互联网接入权限的软件……OK,在国内,基本上90%的程序都会有。
第二,运行所需的内存,是刚好分够给你的,比如你的程序需要50M,就给你分51M,运行所需内存突然要求增加,CPU就要重新释放和申请新的内存,这是一个不小的开销。释放和申请内存几乎不要时间。

--同上,没有考虑过加载资源

第三,系统释放的进程,可能正是你需要的,就像你运行大型软件,然后随时切回桌面。系统不认为桌面插件是不可释放的,然后咔嚓了,切回桌面的时候就得重新载入。系统怎么可能会释放桌面管理进程?哪个傻逼系统会这么设计?

--你自己用过没?找台256内存的跑个大型应用,切回桌面。一开始是只有壁纸,一段时间后按钮才出来。
那是因为桌面进程中加载桌面上的文件以及快捷方式。这是在与你关闭的大型应用中竞争IO资源, 不是竞争CPU和RAM资源,懂吗?

弱爆了
弱爆了

TOP

这种机制挺好的
在电池技术没有进步之前
依然有存在的必要

TOP

posted by wap, platform: iPhone
引用:
原帖由 @c月光咖啡  于 2012-9-11 10:11 发表
你有想过如果苹果服务也404会怎么样吗?

可悲的是ios6并没有进一步放开后台,不知道是不是因为教主死的了原因。而且ios这种机制天生的缺陷,就是不会区分运行内存和预读内存。现在苹果只能限制那几个程序使用后台 ...
无谓的假设有意思吗?事实是苹果的推送一直很稳定。这么喜欢假设何不假设如果全世界的电脑和手机都爆炸了会怎样?

TOP

引用:
原帖由 约翰法雷尔 于 2012-9-11 11:12 发表
posted by wap, platform: iPhone

苹果是自己花了几十亿搞云端服务器,所有推送都是收上去自己管理。

google自己的推送服务器就给自己那几个软件用,比如gmap,gtalk。还有诸如whatsapp这样的公司也有自己的推送 ...
不是说,软件除了用苹果的推送服务器外,自己也要建立推送服务器的吗?苹果只负责建立信息预告,内容还得软件服务器自己推。

有没有业内来证实一下?

TOP

posted by wap, platform: iPhone
引用:
原帖由 @rb  于 2012-9-11 14:56 发表
不是说,软件除了用苹果的推送服务器外,自己也要建立推送服务器的吗?苹果只负责建立信息预告,内容还得软件服务器自己推。

有没有业内来证实一下?
一些成本很低的个人app都能推送,我觉得你这个说法不太合理

TOP

软件开发商当然需要自己的服务器,这样才有数据交互,否则推送给用户的内容你打电话亲口告诉苹果啊?

苹果提供的是一个推送平台,苹果不是数据中心。

TOP

发新话题
     
官方公众号及微博