打开文件太多错误 - 调试

时间:2012-02-17 14:00:04

标签: android

我的设备上经常出现“打开文件太多错误”错误(HTC Wildfire S,Android 2.3.5。)。我已经发现了一些我可能有内存泄漏的话题。问题是如何调试问题?如何找到哪个进程正在使用文件描述符而不释放它?

我的设备不是root用户 - 所以我想知道如何在非root设备上获取有关打开的描述符的信息。如果这不可能,请告诉我如何在Android模拟器上获取此类数据。

3 个答案:

答案 0 :(得分:3)

我刚刚处理过这件事。 (SFAIK)OS是“太多打开的文件”。在任何Unix上,在终端中运行lsof。设为lsof | less,因为您不会相信有多少个打开的文件。这些天的应用程序都是文件疯狂。

无论如何,关闭一些应用程序,尽可能多,然后再试一次。其中一个罪魁祸首是adb本身。我不知道它是否会关闭任何东西。因此,如果关闭某些应用程序没有帮助,请关闭Eclipse。然后在Unix终端中运行skill -9 adb。其他操作系统将有其他杀毒工具。但是杀死adt,这可能(当然在Unix中)在关闭Eclipse之后仍然在后台徘徊。

如果这不起作用,那就太小了;去那里;并手动关闭这些文件。

答案 1 :(得分:0)

为了获得与文件本身一起打开的文件数量,您还可以使用以下命令:

lsof | grep USER | tee /dev/tty | wc -l

USER打开的文件总数将打印在输出的最后。

答案 2 :(得分:0)

您还可以运行类似

的内容

lsof | grep <pid>

查看您的应用正在使用的所有文件。将| wc -l添加到最后以获得总计。