为什么 iOS 不支持虚拟内存?

2024-01-30 14:44:37 +08:00
 tsohgdivil

iPhone 那么小的内存,最近几个 iOS 更新以后杀后台现象越来越严重,有时候我后台挂个视频通话切到其他应用,都能把我视频通话给杀了。相机应用更是重量级,基本上进个相机可以把所有其他后台应用都杀掉。

MacBook 8G 尊享版好歹还能用 SSD 寿命换一下使用体验,为啥 iPhone 又不给大内存,也不支持虚拟内存呢?

5110 次点击
所在节点    Apple
48 条回复
beijing999923
2024-01-30 15:01:47 +08:00
个人不认为虚拟内存有用,安卓的内存扩展都是面子工程
ShadowPower
2024-01-30 15:14:07 +08:00
让用户用得太舒服会影响新款销量
Worldispow
2024-01-30 15:16:27 +08:00
你应该这么问:
为什么 mac os 支持虚拟内存,ios 不支持虚拟内存?
mac os 的虚拟内存是不是面子工程?
shenjinpeng
2024-01-30 15:21:56 +08:00
感觉还是国产 App 普遍更加臃肿吧,外国佬体会不到 舍不得加内存
wclebb
2024-01-30 15:26:48 +08:00
我第一个想法是:交换内存会不会耗电。
july1995
2024-01-30 15:27:34 +08:00
ios 应该是支持虚拟内存的,杀后台应该和策略有关,内存吃紧的时候,苹果觉得你一个第三方 app ,我内存不足,我就要把你杀掉,对于一些优先级高的系统应用,实在是不能杀了,我就虚拟内存应个急。通常情况下,苹果会优先杀掉第三方 app ,提升自己的流畅度。 毕竟虚拟内存 速度还是要差得多。
ShadowPower
2024-01-30 15:31:35 +08:00
@wclebb 会,但是比重新启动应用的耗电低
yyzh
2024-01-30 15:31:38 +08:00
看网上拆解苹果有些型号的 iphone 用的是 qlc 储存芯片.如果开启虚拟内存的话性能不行的.
darkengine
2024-01-30 15:33:04 +08:00
我有一台 iPhone X 测试机,没有微信支付宝,现在还纵享丝滑
LUO12826
2024-01-30 15:40:20 +08:00
稍微纠正一下,op 想说的其实是 swap ,硬盘交换区,而不是虚拟内存。
听说配备 M 系芯片的 iPad 已经有 swap 了。早前也有人说越狱后发现 iPhone 也有 swap ,不过不知真伪。
wangsd
2024-01-30 15:53:01 +08:00
苹果没有吗?我的 iPhone 容量快用完就会很卡,我一直以为有的呢。
RickRobust
2024-01-30 16:05:13 +08:00
其实是有的,最大是 640MB ,路径在/var/vm/swapfile[0-4],具体见 https://github.com/apple/darwin-xnu/blob/main/osfmk/vm/vm_compressor_backing_store.c#L138
他是写死在 kernel 的,可能内核级越狱也许可以改,所以就是几乎不可能(除非还在用 a11 之前的设备)。
1014982466
2024-01-30 16:20:31 +08:00
iOS 一直是有 swap 的,我没记错 iOS4 时代就有了吧,当时越狱后还可以改大小
superrichman
2024-01-30 16:22:38 +08:00
会影响库克割韭菜
podel
2024-01-30 16:22:55 +08:00
映像中不知道什么地方看到说 iphone 有冻结机制来着。会把内存里面的后台程序直接冻结保存到机器的存储里面。
恢复的时候 在载入回去。
tsohgdivil
2024-01-30 16:30:22 +08:00
@podel 这个好像是需要应用主动去支持的。但是只能回复那些好序列化的状态,像视频通话,游戏这些肯定没法通过这种机制去恢复
123test1010
2024-01-30 17:13:33 +08:00
你是不是对虚拟内存有什么误解,直接问 GPT ,都告诉你 IOS15 开始就引入了类似 macros 的内存交换。但是参考 macOS 的活动监视器-内存信息,内存分了很多种,实际内存、实际专用内存、实际共享内存、可清除内存等。只关心实际专业内存即可,这个是 app 自身必须占用的物理内存,其它内存的数据可以用来被随便释放,而不会导致 app 本身程序崩溃。你以为的虚拟内存就是替代物理内存,来供 app 当作物理内存用呢?本质上虚拟内存只能用来存放一些不重要的数据,可以理解为可持久化的非重要数据,用作交换。
benjaminliangcom
2024-01-30 19:22:49 +08:00
安卓很多也是 ZRAM 吧,iOS 应该是有对应的内存压缩技术的
vcn8yjOogEL
2024-01-30 19:40:10 +08:00
储存 Swap 比内存慢得多, 只适合存放长期冻结的 App, ZRAM 早就在用了

正常情况下 App 是应该记录当前状态的, 就算被杀掉也可以返回上次所在页面, 游戏则应该持续自动存档, 确保随时可以中断
wanguorui123
2024-01-30 21:07:17 +08:00
主要还是耗电,其次是虚拟内存只能作为应急不能作为首选

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1012768

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX