記憶體洩漏之EventBus

2021-08-18 10:55:30 字數 542 閱讀 7603

專案中使用了eventbus之後,不停地出現報告關於eventbus記憶體洩漏的leaks

反覆檢查了**,發現eventbus的註冊已經解綁都是正確的,一開始也覺得這個記憶體洩漏地莫名其妙。

洩漏大概說的是,eventbus持有了某個activity或者fragment的物件,這個物件洩漏了。

後面我梳理了一下場景:

導航頁過去之後,進入多個fragment切換的主介面(eventbus有註冊在這裡),由於使用者未登入,只要有操作,就會跳轉到登入介面,從登入介面登入成功返回之後,都會出現記憶體洩漏的問題。

經過排查,發現是由於主介面homeactivity的啟動模式引起的。homeactivity的啟動模式是standrad,每次都會新建乙個例項,應該是由於每次都新建乙個homeactivity例項,而沒有將上乙個homeactivity的例項給消除掉。

解決方案:

homeactivity採用singleinstance模式,確保只有乙個例項,不會被重複建立。當然採用singleinstance引發的**層面的問題這裡就不展示了,根據具體要求修改就好了。

記憶體篇之堆洩漏

堆洩漏 即常說的記憶體洩漏,是嵌入式軟體裡的常見問題,會導致軟體執行一段時間後記憶體耗盡。什麼是 堆洩漏 記憶體分配和釋放的操作是程式設計師根據需要動態隨機發起,程式本身 或編譯工具 無法自動判斷某塊已分配的記憶體什麼時候不再被使用,必須由程式設計師自己手動呼叫free釋放,以便為其他程式騰出空間。...

記憶體洩漏和記憶體溢位 記憶體洩漏和記憶體溢位

記憶體洩漏 是指申請的記憶體空間使用完畢之後未 一次記憶體洩露危害可以忽略,但若一直洩漏,無論有多少記憶體,遲早都會被占用光,最終導致程式crash。因此,開發中我們要盡量避免記憶體洩漏的出現 記憶體溢位 是指程式在申請記憶體時,沒有足夠的記憶體空間供其使用。通俗理解就是記憶體不夠用了,通常在執行大...

問題排查之JVM記憶體洩漏

問題排查之jvm記憶體洩漏 1.問題描述,部署在客戶伺服器上的資料閘道器專案,客戶開發反應,出現伺服器記憶體占用很高的問題,懷疑是否為我們部署的專案導致?開始排查 一 endif 登入到客戶伺服器,首先確認是否是我們應用占用的記憶體 endif 檢視記憶體占用排行 ps aux sort k4,4n...