为什么同样是8G运行内存,Windows能同时开一大堆后台进程和前台应用,而Android不可以?
windows属于pc操作系统,主要的目的是尽量发挥硬件的计算性能。它不用考虑能源消耗,可以长时间保持cpu全速运行,可以不考虑内存容量,不行就用硬盘缓存。android是移动操作系统,要保证在能量消耗受限制的情况下,设备提供可接受的计算性能。所以,要明确区分对客户有用的程序,把有限资源分配给客户最希望的程序。尽量把临时信息存储在内存而不是rom中,以节省电量和加快运算速度。这两个策略的不同,造成它们在不同领域都有更好的表现。其实,android的linux内核如果调整后放到pc机上,能比windows同时运行更多的应用。windows裁剪后的wiodows mobile也比android更省电,反应更快。
安卓吃内存,Windows吃CPU,安卓属于Linux,有用没用先把内存吃完了再说
Windows系统和Android系统的设计之初就有本质上的区别。
笔记本合上上盖休眠的时候,就真的什么事情都不做了,所有的应用程序也确实都停止运行了。所以Windows系统不需要暴力的杀后台,更不用操心有后台应用影响休眠时长和电池续航的问题。
手机你能让它休眠吗?不能,手机如果休眠了,可能连个电话都接不到,这就违背了它一直延续的初衷-“联系”。手机关闭屏幕的时候,还有有部分应用程序依然需要运行,但有其他很多应用却想搭便车,非常努力地让自己在后台上运行着,这就严重的降低了手机续航的能力,手机厂商在做系统开发的时候就会非常激进的采取杀后台的策略来提高手机的续航能力、降低发热量。
电脑有庞大的空间和散热系统,而手机只能蜷缩在狭小的空间里想法降低功耗
实践证明高温和高压都会严重的影响电子设备的使用寿命,而实践又证明有效的散热能够提高电子设备的使用寿命。
电脑的供电足,它的马力自然也就足,要不然需要那么大面积的PCB板干嘛?当然它的散热的能力也不弱,又是铜管、又是散热风扇、又是水冷,风扇一个不够那就两个呗。
反观手机就很难做到非常好的散热能力,玩着手机的时候稍微有点发烫就已经属于很严重的现象级故障。手机厂商总是在外观、体积、功耗、散热、续航等各项指标中来回地徘徊,寻找一个平衡点。手机采用低功耗的ARM架构处理器就相当可以理解了。Intel和AMD也想闯入手机市场,多次尝试无果后只能黯然离场。
Windows的芯片架构和手机的芯片架构存在本质上的区别
Windows代表着X86的芯片架构阵营,而手机的芯片架构由ARM一统江湖。有人说X86架构无法做到ARM架构的功耗,而ARM架构也无法做到X86架构的性能。
我们可以在电脑上安装一个模拟器来玩手机游戏,这样就可以大屏玩游戏了,简直不要太爽。但要是扛着一台电脑来打电话,是不是会比刚开始的“大哥大”还要落后呢?
我们也可以在手机上安装或者虚拟一个Windows的操作系统,其结果就是卡到你怀疑人生,更别提正常得不能再正常的生产力用途了,比如打开CAD、3DMAX、Pr等。手机这么小,就算打开这些程序都不会卡,那么我们是要放大还是要持续放大呢?
总结
在桌面操作系统,不管是Windows、GNU/Linux都会在内存全部耗尽的时候才会试图杀进程(MacOS有所不同)。而Android就不行,哪怕系统有16G内存,某个应用程序仅占用了1G内存,照样杀掉你的进程没有一点商量。
归根结底,就是Windows和Android的应用场景不同,导致了系统设计出现了极大的不同。Windows本身就是一个重量级的多任务系统,它设计的目标可不仅仅是为了生活娱乐,更重要的是它肩负的任何繁重而严肃。Android是一个轻量级的操作系统,设计的初衷也并没有把它当成是一个生产力系统,也没有打算同时运行那么多的APP,可以说Android的火爆超出了当初设计者的预料。
以上个人浅见,欢迎批评指正。
认同我的看法,请点个赞再走,感谢!
喜欢我的,请关注我,再次感谢!
先不说windows是世界上最成功的图形操作系统, 就单单运行机制上差距就让安卓注定没法打。
比较详细的技术细节我其他地方已经解释过,这里水一把。
总之windows从内核到系统到开发工具到运行时都是一站式的,保证性能可靠扩展最佳。
安卓是啥? 说白了其实是一个操作系统上的大App容器而已,不能说是一个典型操作系统。
Win11已经宣布可以运行安卓App了,在测试阶段。可以轻松把安卓依赖系统调用转到NT内核上,属于“釜底抽薪”。
同样,华为鸿蒙也轻松支持安卓App。不但内核轻松换成华为自己的liteOS的“釜底抽薪”。还支持安卓和鸿蒙混合开发和混合部署的“混血儿”。
目前来看,安卓不但运行根基被人想换就换,开发套件(freamwork)和运行时(runtime)的“血统”也很难保住了。
其实最主要的原因有以下两点:
1、指令集的不一样:安卓一般运行在ARM下,ARM是精简指令集,而Windows一般运行在x86上,x86是复杂指令集。首先说明一下什么是指令、什么是指令集。指令是指示计算机CPU执行某种操作的命令,它由一串二进制数码组成;指令集CPU中用来执行某种操作的命令的集合,其作用就是使操作系统的命令能转化为硬件能执行的指令,复杂指令集的处理方式是把算式输进中央处理器后由指令集分配处理空间、处理时序、部分处理流程,实际上人机操作系统参与是比较少的;而精简指令集不是,它把大部分的处理流程交由人机操作系统来完成。这个原因就造成人机操作系统对软件的处理方式不一样,例如算1+1:复杂指令集的算法是人机操作系统告诉指令集的我要计算1+1的结果,然后它自己就会在处理器里面自己安排空间时序去运算,最后返回结果,而精简指令集则和人机操作系统交互频繁,什么处理空间、处理时序、处理流程基本上每进行一步都要和人机操作系统交互一下。
2、软件运行环境不一样:windows的软件是直接运行在操作系统之上,但android的软件是运行在java虚拟机之上,而且windows的软件是在安装之前是已编译的状态,但android的软件在运行时才编译,就算更新版的是预编译,但也不是直接用操作系统来运行,也是通过java虚拟机来运行的。
因为架构不一样,手机8G和电脑8G没得比,就好像现在最先进的手机芯片性能都完全比不过10年前的电脑芯片,骁龙865都还没有奔腾处理器厉害
你比较一下QQ电脑版和安卓版占的内存就知道为什么了
Android应用基本都是运行在虚拟机之上的,AVM本身就要消耗相当多的内存。 Windows里的好多应用软件是基于系统的原生接口做开发,内存占用会小很多。如果你在Windows里运行Java编写的应用或进程,也会发现开不了几个,因为这些应用和进程要运行在Java虚拟机之上,道理是相同的。这也就是为什么目前苹果手机主流的内存是3GB,而Android的需要8GB。
WINDOWS,IOS,MACOS 都是通过API可以直接运行于硬件之上的,安卓通过API要先运行在虚拟机上,然后虚拟机再运行在硬件之上!
几个地方是肯定不一样的。1、windows可以把内存数据导入硬盘,安卓没这个机制。2、安卓多是arm指令,程序占内存多。大概多1倍以上。3、内存释放安卓要自动释放,Windows大多在程序内解决。4、就是程序员对内存感觉的问题了,岁数大的程序员对内存敏感,安卓程序员近年膨胀速度快,年龄普遍偏小,对内存占用不敏感。
安卓也是可以的。前提是用C而不是用java。java的工作机制决定了它资源消耗大运行慢。开多了任务资源就很快耗尽了。
精简指令集吃内存,复杂指令集吃cpu。