Android磁碟異常的問題分析

2021-10-08 03:19:16 字數 951 閱讀 6310

最近遇到了乙個以前沒有遇到過的bug,記錄一下

在logcat中頻繁有 enospc 報錯,總是提示磁碟空間不足,導致很多應用都沒有辦法正常使用,但是偶爾能夠恢復。不能自動恢復的時候,重啟能夠恢復

等待這個問題復現後檢視裝置 df -h 發現data占用100% ,但是du -sh 發現和df 看到的磁碟使用不一樣

這個時候如果重啟的話磁碟就可以恢復正常占用 50%

在這中途疑惑了一段時間時間,曾把data分割槽全部pull出來,發現實際的占用和du計算出來的差不多。當時的心情就是,我屮艸芔茻,什麼鬼

後來檢視了一下資料,熟悉linux的人應該知道,在linux中當程序開啟了某個檔案時,只要該程序保持開啟該檔案,即使將其刪除,它依然存在於磁碟中。這意味著,程序並不知道檔案已經被刪除,它仍然可以向開啟該檔案時提供給它的檔案描述符進行讀取和寫入。除了該程序之外,這個檔案是不可見的,因為已經刪除了其相應的目錄索引節點。

此時我大膽的猜測,難道說。。。是因為這個原因?順著猜想繼續往下跟

在linux中有個指令 lsof (list open file),通過這個指令匯出了所有程序開啟的檔案,發現storage有異常

發現30828這個程序有很多開啟的檔案,但是檔案實際上是被標記為已經刪除,那麼問題應該出現在這個程序中,這個程序開啟了很多檔案,處於占用狀態,一直沒有釋放。具體原因查**後發現是在使用了fileinputstream後沒有呼叫 close,這是時候心裡就只有乙個念頭,hashmmp,誰寫的。。。所以,論資源釋放的重要性!

Android磁碟管理 之vold原始碼分析 3

netlinkmanager類負責管理捕獲核心的uevent事件,這裡使用了netlink套接字。netlink的概念 netlink套接字是用以實現使用者程序與核心程序通訊的一種特殊的程序間通訊 ipc 也是網路應用程式與核心通訊的最常用的介面。netlink套接字可以使用標準的套接字apis來建...

Android 應用按返回鍵異常退出的問題

開發過程中遇到按返回鍵異常退出的問題,log顯示為空指標異常,進一步產看是由於onactivityresult得到的intent為空。按返回鍵複寫 例如以下 override public void onbackpressed 檢視activity源 發現onbackpressed的預設實現例如以下...

5分鐘解決異常問題

今天去面試的時候,面試官問了我乙個問題,乙個中型的專案假設完全沒有作異常處理,需要乙個程式設計師在5分鐘內處理,當時我在想要把整個異常處理就左右定義全域性變數,下來我查了下資料主要分一下幾個步驟完成 1 在配置檔案下配置出現錯誤異常,需要跳轉的頁面 2 然後建立乙個global全域性程式 3 在er...