我们可以在iOS应用程序中安全地保持打开多少个文件?
我们正在使用FMOD在我们的游戏中播放音频,显然有一个好的策略是保持音频文件预先打开,但不会加载到内存中,以便在需要时快速播放。
我没有找到有关每个进程限制的信息,而不是Apple文档中的全局系统范围限制,这里有SO或其他任何地方。
在iPad上使用方便的Python环境进行的快速测试表明,每个进程的限制为250:
我认为我们会低于这个限制。但我们怀疑存在打开文件失败的罕见问题。
是否还存在系统范围的限制,可能会在某些时候产生影响?
我认为我通过该测试发现的每应用限制是在相关问题的评论中提出的,但由于没有任何声誉,我无法发表评论(第一篇文章):on iOS/iPhone: "Too many open files": need to list open files (like lsof)
修改
这样的限制很容易在OSX上查看。也许在越狱的iOS设备上,或者某种方式使用Apple的API /启动该系统命令?
Tonis-MacBook-Pro:MacOS antont$ sysctl kern.maxfilesperproc
kern.maxfilesperproc: 10240
Tonis-MacBook-Pro:MacOS antont$ sysctl kern.maxfiles
kern.maxfiles: 12288
答案 0 :(得分:2)
我碰巧得到一个错误说:
Oct 7 15:24:08 iPhone-5 mobile_house_arrest [4354]:Max open 文件:78
这个堆栈溢出线程也提到78作为数字: mobile_house_arrest[xxx] <Error>: Max open files: 78
因此,78可能是数字,但我没有任何“官方”来源确认,例如Apple文档。