3

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

 7 months ago
source link: https://www.v2ex.com/t/1012768
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  Apple

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

  tsohgdivil · 2 小时 44 分钟前 · 692 次点击

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

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

17 条回复    2024-01-30 17:13:33 +08:00
beijing999923

beijing999923      2 小时 27 分钟前 via Android

个人不认为虚拟内存有用,安卓的内存扩展都是面子工程
ShadowPower

ShadowPower      2 小时 14 分钟前   ❤️ 4

让用户用得太舒服会影响新款销量
Worldispow

Worldispow      2 小时 12 分钟前   ❤️ 1

你应该这么问:
为什么 mac os 支持虚拟内存,ios 不支持虚拟内存?
mac os 的虚拟内存是不是面子工程?
shenjinpeng

shenjinpeng      2 小时 7 分钟前

感觉还是国产 App 普遍更加臃肿吧,外国佬体会不到 舍不得加内存
wclebb

wclebb      2 小时 2 分钟前

我第一个想法是:交换内存会不会耗电。
july1995

july1995      2 小时 1 分钟前 via Android

ios 应该是支持虚拟内存的,杀后台应该和策略有关,内存吃紧的时候,苹果觉得你一个第三方 app ,我内存不足,我就要把你杀掉,对于一些优先级高的系统应用,实在是不能杀了,我就虚拟内存应个急。通常情况下,苹果会优先杀掉第三方 app ,提升自己的流畅度。 毕竟虚拟内存 速度还是要差得多。
ShadowPower

ShadowPower      1 小时 57 分钟前

@wclebb 会,但是比重新启动应用的耗电低
yyzh

yyzh      1 小时 57 分钟前

看网上拆解苹果有些型号的 iphone 用的是 qlc 储存芯片.如果开启虚拟内存的话性能不行的.
darkengine

darkengine      1 小时 55 分钟前

我有一台 iPhone X 测试机,没有微信支付宝,现在还纵享丝滑
LUO12826

LUO12826      1 小时 48 分钟前

稍微纠正一下,op 想说的其实是 swap ,硬盘交换区,而不是虚拟内存。
听说配备 M 系芯片的 iPad 已经有 swap 了。早前也有人说越狱后发现 iPhone 也有 swap ,不过不知真伪。
wangsd

wangsd      1 小时 35 分钟前

苹果没有吗?我的 iPhone 容量快用完就会很卡,我一直以为有的呢。
RickRobust

RickRobust      1 小时 23 分钟前   ❤️ 2

其实是有的,最大是 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

1014982466      1 小时 8 分钟前

iOS 一直是有 swap 的,我没记错 iOS4 时代就有了吧,当时越狱后还可以改大小
superrichman

superrichman      1 小时 6 分钟前

会影响库克割韭菜
podel

podel      1 小时 6 分钟前

映像中不知道什么地方看到说 iphone 有冻结机制来着。会把内存里面的后台程序直接冻结保存到机器的存储里面。
恢复的时候 在载入回去。
tsohgdivil

tsohgdivil      58 分钟前

@podel 这个好像是需要应用主动去支持的。但是只能回复那些好序列化的状态,像视频通话,游戏这些肯定没法通过这种机制去恢复
123test1010

123test1010      15 分钟前

你是不是对虚拟内存有什么误解,直接问 GPT ,都告诉你 IOS15 开始就引入了类似 macros 的内存交换。但是参考 macOS 的活动监视器-内存信息,内存分了很多种,实际内存、实际专用内存、实际共享内存、可清除内存等。只关心实际专业内存即可,这个是 app 自身必须占用的物理内存,其它内存的数据可以用来被随便释放,而不会导致 app 本身程序崩溃。你以为的虚拟内存就是替代物理内存,来供 app 当作物理内存用呢?本质上虚拟内存只能用来存放一些不重要的数据,可以理解为可持久化的非重要数据,用作交换。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK