问题标签 [leakcanary]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 保留的片段泄漏
我正在使用带有保留片段的简单活动,其中包含活动使用的一些数据。保留的片段使用加载器从内容提供者获取数据。在配置更改(屏幕旋转)时,活动被重新创建并且旧实例被泄漏,正如 LeakCanary 库报告的那样(保留片段 -> 加载器管理器 -> 旧活动)。这与 support-v4 23.0.0 库(以及以前的版本)一起复制。带有保留片段的活动示例,其中复制了泄漏(此处没有有用的代码,仅用于演示泄漏):
来自 LeakCanary 的堆栈:
也许我做错了什么,忘记调用一些close
或release
方法?我认为将保留的片段与加载器一起使用是一种常见的模式,这里不应该是内存泄漏。
memory-leaks - 单独的 LeakCanary 是否足以解决内存泄漏问题?
我已经使用 LeakCanary 有一段时间了。它做得非常好,尤其是考虑到集成到任何人可能拥有的任何应用程序是多么容易时。
但是,仅 LeakCanary 就足以追查这些泄漏吗?我应该在多大程度上依赖它(尤其是在优化生产应用程序时)?
android - 调用 Places.GeoDataApi.getPlaceById 泄漏了我的 Activity 实例
当我使用Places.GeoDataApi.getPlaceById()
LeakCanary 时检测到我的一个实例Activity
已泄漏。
这是 LeakCanary 报告的内容
这是我的代码。这两种方法都在 my 中声明PlaceSearchActivity
。
我不确定是什么导致了问题。任何帮助表示赞赏。谢谢!
更新:还使用以下代码检测到内存泄漏。
这可能是PlayServices
图书馆内的问题。我将在一个空项目上对此进行测试,以验证问题。
android - 在同时使用构建类型和产品风味时,如何包含 LeakCanary?
LeakCanary文档提到了以下处理构建类型的内容:
但是,如果同时使用多个product flavors
呢?我收到Gradle DSL method not found
有关buildTypeCompile
功能的错误。
这是我当前 Gradle 文件的骨架:
android - SharedElement 和自定义 EnterTransition 导致内存泄漏
具有共享元素动画和自定义输入动画会导致活动泄漏。
知道可能是什么原因吗?
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * com.feeln.android.activity.MovieDetailActivity has leaked:
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * GC ROOT android.app.ActivityThread$ApplicationThread.this$0
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * references android.app.ActivityThread.mActivities
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * references android.util.ArrayMap.mArray
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * references array java.lang.Object[].[1]
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * references android.app.ActivityThread$ActivityClientRecord.activity
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * references com.feeln.android.activity.MovieDetailActivity.mActivityTransitionState
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * references android.app.ActivityTransitionState.mEnterTransitionCoordinator
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * references android.app.EnterTransitionCoordinator.mEnterViewsTransition
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * references android.transition.TransitionSet.mParent
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * references android.transition.TransitionSet.mListeners
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * references java.util.ArrayList.array
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * references array java.lang.Object[].[1]
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * references android.transition.TransitionManager$MultiListener$1.val$runningTransitions (anonymous class extends android.transition.Transition$TransitionListenerAdapter)
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * references android.util.ArrayMap.mArray
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * references array java.lang.Object[].[2]
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * references com.android.internal.policy.impl.PhoneWindow$DecorView.mContext
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * leaks com.feeln.android.activity.MovieDetailActivity instance
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ [ 09-21 16:19:31.007 28269:31066 D/LeakCanary ]
* Reference Key: af2b6234-297e-4bab-96e9-02f1c4bca171
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * Device: LGE google Nexus 5 hammerhead
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * Android Version: 5.1.1 API: 22 LeakCanary: 1.3.1
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * Durations: watch=6785ms, gc=262ms, heap dump=8553ms, analysis=33741ms
09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ [ 09-21 16:19:31.007 28269:31066 D/LeakCanary ]
要重现,您需要有一个大的共享图像动画以及一个自定义 EnterAnimation 和 setEnterSharedElementCallback 。所有这些都来自支持库。
这是我设置 EnterTransition 的方法:
android - Leakcanary 使用 AppCompatActivity 和 FragmentStatePagerAdapter 显示片段泄漏
我已经有这个问题一段时间了,我真的不知道还有什么可以尝试的。我把 Leakcanary 卡在我的项目上,这样我就可以强迫自己以“正确的方式”学习 android,而不会发现导致内存泄漏的模式。我正在构建一个应用程序,我已经把它剥离了很多,但我仍然看到这种泄漏发生。
我有一个 Activity,里面有一个 viewpager 并实例化了 10 个片段。如果我打开设备一切似乎都很好,直到我按下“主页”,我才得到以下内存泄漏:
主要活动:
MainActivity 布局:
分段:
片段布局:
android - 为什么会发生这种内存泄漏 - android - LeakCanary
我开始使用 Leak Canary,在使用 MapView 旋转片段后,我得到了这个内存泄漏。
这就是我向活动添加片段的方式(我在活动中的 onCreate 中调用它,并在导航菜单中选择项目后)它使用简单的原则,即片段不被破坏但只覆盖地图片段 - 我不必关心保留状态:
和片段代码
知道为什么会发生内存泄漏吗?
android - 找不到符号类 AndroidExcludedRefs、DisplayLeakService、
我们正在声明我们的泄漏金丝雀依赖项,如项目的 Github 页面上所述。
到目前为止,一切正常。现在我们开始排除这样的已知泄漏:
现在,当我们切换到发布构建类型时,不再找到像 AndroidExcludedRefs、DisplayLeakService 和 ExcludedRefs 这样的类,因为“no-op”依赖项不包括它们。
处理这个问题的最佳方法是什么?
android - Android Media player keeps app instance and cause a memory leak
I have an activity with a media player as a member variable.
My media player is initialized like this:
Everything works just fine, and then i override my activity onStop method to release the Media Player.
But after the activity has stopped i get a memory leak report from LeakCanary.
The report is like this:
Yes i have a MyApp class which extends Application and i am holding a reference to MyApp instance in a static field, but i never use that reference in my activity, how can i solve this leak ?
[EDIT]
Here is the code of my Activity:
java - 如何使用泄漏金丝雀
我目前在我的应用程序中遇到 OutOfMemoryError。我曾尝试使用 MAT 进行调试,但在一些活动中仍然很难找到泄漏。然后我找到了 LeakCanary,它看起来更简单易用,但是我找不到任何初学者使用 Leak Canary 的分步指南,即使在 Google 上也是如此。我已经通过 build.gradle 中的依赖项安装了 LeakCanary,这就是我目前得到的:
ExampleApplication.java
假设我有一个活动,我希望 LeakCanary 观看一个对象
SampleActivity.java
现在我如何使用 LeakCanary 来查看是哪个对象导致了内存泄漏?