losf命令說明
lsof(list open files)是linux中一個列出當(dāng)前系統(tǒng)打開文件的工具。也可以在android系統(tǒng)中使用丑掺。
lsof輸出各列信息的意義如下:
COMMAND:進(jìn)程的名稱
PID:進(jìn)程標(biāo)識符
USER:進(jìn)程所有者
FD:文件描述符棠涮,應(yīng)用程序通過文件描述符識別該文件吉执。
TYPE:文件類型怪蔑,如DIR枕扫、REG等
DEVICE:指定磁盤的名稱
SIZE:文件的大小
NODE:索引節(jié)點(文件在磁盤上的標(biāo)識)
NAME:打開文件的確切名稱
檢查anroid系統(tǒng)中進(jìn)程是否存在文件句柄未關(guān)閉
使用userdebug版本三妈,進(jìn)入adb shell, 使用命令: lsof | grep sddemo (舉例sddemo進(jìn)程),可以看到已經(jīng)有十多個被打開的文件畜埋。
接下來去操作這個進(jìn)程,檢查fd是否會一直增長畴蒲。如果一直不停增長且不會恢復(fù)到原始狀態(tài)悠鞍,那么就有泄漏的可能。從下圖中可以看到模燥,通過反復(fù)的操作咖祭,fd已經(jīng)增長到了100多個。這種情況就可以根據(jù)的被打開的文件來排查相關(guān)代碼是否存在未關(guān)閉文件句柄蔫骂。