我目前正在开发一个很酷的 Android 应用程序,它可以将多个图像文件一起分析和交叉。不幸的是,我无法公开有关它的更多信息。
无论如何,我已经在多台设备上对其进行了测试,并且在某些随机情况下达到了打开文件过多的情况(Errno 24)。这发生在具有内部 SD 卡的设备(如三星 Galaxy S3)上。生根设备后,我已经能够确定由于 sdcard 被挂载为单独的文件系统(称为 FUSE 的伪文件系统)而导致的问题,其中我的应用程序打开的文件实际上是由系统进程 /system/bin 打开的/SD卡/。
这将设备上的所有进程限制为仅 1024 个文件描述符(驻留在 SD 卡上的文件)。1024 个文件描述符限制是 Android 每个进程的最大打开文件数。
以安装了 100 个应用程序的设备为例,每次打开 10 个文件(数据库文件、属性等),几乎达到了限制。一旦超过 1024 个文件的限制,整个设备就毫无用处——应用程序停止工作等等。
★★ 如果你和我一样觉得这很麻烦,请给这个未决问题投票 ★★ http://code.google.com/p/android/issues/detail?id=39002