簡體   English   中英

LinkedBlockingQueue泄漏

[英]Leaking LinkedBlockingQueue

我在應用中的android本機堆中遇到了泄漏問題。 泄漏似乎來自LinkedBlockingQueue,它只是在不斷增長而不被清除。

如果您看下面的圖,本機堆總共有478M,並且在不斷增長(它從20M開始,每幾秒鍾增長約25萬)。 JVM堆正常工作,並保持在100M左右的相同水平。 我的應用程序使用了自己的網絡代碼,但是即使關閉了它,並且該應用程序只是“坐在”那里,仍然存在此泄漏。

我已經確定LinkedBlockingQueues指向com.android.okhttp.ConnectionPool實例(同一個實例)。 我不在代碼中的任何地方使用okhttp。 我確實將Firebase與配置,數據庫和存儲支持一起使用。 但是,除了附加了偵聽器的配置外,其他服務在我測試時都沒有。

控制台日志

下面的快照顯示了我的Java堆轉儲。 LinkedBlockingQueue有6029個實例和將近300M的保留內存。 這個數字隨着本地堆的增加而增長,因此我假設它們是相關的。

hpref類別

下面的快照顯示了LinkedBlockingQueue $ Node實例之一,其中該項目是連接池。 它們看起來都相同,並指向同一項目。

hpref實例

我從來沒有遇到過那樣的內存泄漏,並且不確定是什么原因。 如果您對其中的任何內容有任何想法,或者之前有類似的問題,我們將不勝感激。

我想到了。 這與我的應用程序或Firebase無關。 似乎與ADB集成的Android Studio可能是原因。 當我禁用集成並使用Android設備監視器存儲內存並獲取日志時。 本機堆不會增長,並保持在相同水平。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM