android.support.constraint.ConstraintLayout 已泄露 :

标签 android memory-leaks leakcanary

我正在使用 LeakCanary 检测应用程序中的内存泄漏。我使用它成功地识别并修复了一些漏洞,但我正在努力寻找这个漏洞的根源:

* android.support.constraint.ConstraintLayout has leaked:
* Toast$TN.mNextView
* ↳ LinearLayout.mContext
* ↳ HomeActivity.!(mDelegate)!
* ↳ AppCompatDelegateImplN.!(mActionBar)!
* ↳ ToolbarActionBar.!(mDecorToolbar)!
* ↳ ToolbarWidgetWrapper.!(mToolbar)!
* ↳ Toolbar.mParent
* ↳ ConstraintLayout
* Reference Key: 552b5bc5-409d-44c4-8412-87341237ae6d
* Device: samsung samsung SM-G960F starltexx
* Android Version: 8.0.0 API: 26 LeakCanary: 1.6.2 0ebc1fc
* Durations: watch=5769ms, gc=153ms, heap dump=933ms, analysis=5802ms

此泄漏是由 Android SDK 还是应用特定代码引起的?

最佳答案

泄漏是由应用程序特定代码引起的。一个名为 getActivity().setSupportActionBar() 的 fragment 具有包含在 fragment 布局中的 View 。当切换到另一个 fragment 时,资源无法得到 gc'ed,因为该 Activity 仍然持有对不再可见的工具栏的引用。 我通过在 fragment onDestroyView() 方法中调用 getActivity().setSupportActionBar(null) 来修复此泄漏,该方法删除了对工具栏的引用。

关于android.support.constraint.ConstraintLayout 已泄露 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53395085/

相关文章:

java - Jetty webapp 继续增长到堆空间 : (OutOfMemoryError Java heap space)

android - Dagger 2 如何处理不再需要的注入(inject)字段?

android - EditText 一直返回 null?

Android:离线词典

java - Android 无法找到我的 JNI native 库函数

c++ - 这里的unique_ptr会不会有内存泄漏

c - 如何使用 Linux list.h API 避免内存泄漏

android - aapt 以非零退出值 1 结束

java - 发生内存泄漏。无法检测泄漏并进行清洁

java - 如何在没有证书的情况下连接到 https 网络服务?