2012-02-17 21 views
1

我經常得到我的設備上「打開的文件太多錯誤」錯誤(HTC野火S,安卓2.3.5)。我已經發現了一些可能導致內存泄漏的主題。問題是如何調試這個問題?如何找到哪個進程正在使用文件描述符而不釋放它?打開的文件太多錯誤 - 調試

我的設備是不是root-ED - 所以我想知道如何獲取有關打開描述符不是root-ED設備上的信息。如果這是不可能的,讓我知道如何在android模擬器上獲取這樣的數據。

+0

嘗試在Android DDMS透視圖的Eclipse。 – Thommy 2012-02-17 14:02:12

+1

我嘗試過 - 但我不知道該找什麼。你可以說得更詳細點嗎? – Remi 2012-02-17 14:12:57

回答

3

我剛剛一直在處理這個。 (SFAIK)表示「打開文件太多」的操作系統。在任何Unix上,在終端中運行lsof。做那lsof | less,因爲你不會相信有多少打開的文件。應用程序這些天是瘋狂的文件。

無論如何,關閉某些應用中,多達方便,再試一次。其中一個大罪魁禍首是adb本身。我不知道它是否關閉了任何東西。因此,如果關閉一些應用程序並沒有幫助,請關閉Eclipse。然後在Unix終端上運行skill -9 adb。其他操作系統將有其他殺死工具。但是在關閉Eclipse之後,可能會殺死adt,這可能(當然在Unix中)仍然在後臺徘徊。

如果這不起作用,得到真正小;走進去;並手動關閉這些文件。

+0

這也幫助在mac下。謝謝! – User 2014-09-18 18:44:52

0

爲了獲取文件的數量與文件本身,你還可以使用下面的命令打開沿:

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

由用戶打開文件的總數將在輸出的最後打印。

0

你也可以運行像

lsof | grep <pid>

看到您的應用程序正在使用的所有文件。將| wc -l添加到最後以獲得總計。