Skip to content
This repository has been archived by the owner on Sep 12, 2023. It is now read-only.

[LeakCanary] Multiple memory leaks #1323

Open
4 of 5 tasks
FooIbar opened this issue Aug 4, 2023 · 0 comments
Open
4 of 5 tasks

[LeakCanary] Multiple memory leaks #1323

FooIbar opened this issue Aug 4, 2023 · 0 comments
Labels
bug Something isn't working

Comments

@FooIbar
Copy link
Contributor

FooIbar commented Aug 4, 2023

复现步骤 / Step to reproduce

Test back press behavior like #1322

预期行为 / Expected behaviour

No leaks

实际行为 / Actual Behaviour

┬───
│ GC Root: Thread object
│
├─ android.os.HandlerThread instance
│    Leaking: NO (PathClassLoader↓ is not leaking)
│    Thread name: 'LeakCanary-Heap-Dump'
│    ↓ Thread.contextClassLoader
├─ dalvik.system.PathClassLoader instance
│    Leaking: NO (InternalLeakCanary↓ is not leaking and A ClassLoader is never
│    leaking)
│    ↓ ClassLoader.runtimeInternalObjects
├─ java.lang.Object[] array
│    Leaking: NO (InternalLeakCanary↓ is not leaking)
│    ↓ Object[22]
├─ leakcanary.internal.InternalLeakCanary class
│    Leaking: NO (MainActivity↓ is not leaking and a class is never leaking)
│    ↓ static InternalLeakCanary.resumedActivity
├─ com.hippo.ehviewer.ui.MainActivity instance
│    Leaking: NO (GalleryListScene↓ is not leaking and Activity#mDestroyed is
│    false)
│    mApplication instance of com.hippo.ehviewer.EhApplication
│    mBase instance of androidx.appcompat.view.ContextThemeWrapper
│    ↓ ComponentActivity.mOnConfigurationChangedListeners
├─ java.util.concurrent.CopyOnWriteArrayList instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ CopyOnWriteArrayList[4]
├─ androidx.fragment.app.FragmentManager$$ExternalSyntheticLambda0 instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ FragmentManager$$ExternalSyntheticLambda0.f$0
├─ androidx.fragment.app.FragmentManagerImpl instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ FragmentManager.mParent
├─ com.hippo.ehviewer.ui.scene.GalleryListScene instance
│    Leaking: NO (GalleryListScene↓ is not leaking and
│    Fragment#mFragmentManager is not null)
│    Fragment.mTag=2e1ebf17-9e7a-41f9-9f36-8e85f372ced0
│    ↓ GalleryListScene.vm$delegate
├─ androidx.lifecycle.ViewModelLazy instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 112 B in 6 objects
│    ↓ ViewModelLazy.cached
├─ com.hippo.ehviewer.ui.scene.VMStorage1 instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 2.3 MB in 22802 objects
│    ↓ VMStorage1.dataFlow
├─ kotlinx.coroutines.flow.ReadonlySharedFlow instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 2.3 MB in 22792 objects
│    ↓ ReadonlySharedFlow.$$delegate_0
├─ kotlinx.coroutines.flow.SharedFlowImpl instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 1.6 kB in 46 objects
│    ↓ AbstractSharedFlow.slots
├─ kotlinx.coroutines.flow.SharedFlowSlot[] array
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 1.4 kB in 40 objects
│    ↓ SharedFlowSlot[0]
├─ kotlinx.coroutines.flow.SharedFlowSlot instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 1.4 kB in 39 objects
│    ↓ SharedFlowSlot.cont
├─ kotlinx.coroutines.CancellableContinuationImpl instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 1.4 kB in 38 objects
│    ↓ CancellableContinuationImpl._parentHandle
├─ kotlinx.coroutines.ChildContinuation instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 56 B in 2 objects
│    ↓ JobNode.job
├─ kotlinx.coroutines.internal.ScopeCoroutine instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 152 B in 5 objects
│    ↓ JobSupport._parentHandle
├─ kotlinx.coroutines.ChildHandleNode instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ JobNode.job
├─ kotlinx.coroutines.channels.ProducerCoroutine instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ JobSupport._parentHandle
├─ kotlinx.coroutines.ChildHandleNode instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ JobNode.job
├─ kotlinx.coroutines.internal.ScopeCoroutine instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ ScopeCoroutine.uCont
├─ com.hippo.ehviewer.ui.scene.GalleryListScene$onCreateViewWithToolbar$5$1
│  instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Anonymous subclass of kotlin.coroutines.jvm.internal.SuspendLambda
│    ↓ GalleryListScene$onCreateViewWithToolbar$5$1.this$0
├─ com.hippo.ehviewer.ui.scene.GalleryListScene instance
│    Leaking: NO (Fragment#mFragmentManager is not null)
│    Fragment.mTag=2e1ebf17-9e7a-41f9-9f36-8e85f372ced0
│    ↓ Fragment.mFragmentManager
│               ~~~~~~~~~~~~~~~~
├─ androidx.fragment.app.FragmentManagerImpl instance
│    Leaking: UNKNOWN
│    Retaining 1.7 kB in 64 objects
│    ↓ FragmentManager.mPrimaryNav
│                      ~~~~~~~~~~~
╰→ com.hippo.ehviewer.ui.scene.FavoritesScene instance
​     Leaking: YES (ObjectWatcher was watching this because com.hippo.ehviewer.
​     ui.scene.FavoritesScene received Fragment#onDestroy() callback and
​     Fragment#mFragmentManager is null)
​     Retaining 2.5 kB in 93 objects
​     key = b8af0990-0509-4d18-8a83-e74d3572fb3e
​     watchDurationMillis = 5788
​     retainedDurationMillis = 786
┬───
│ GC Root: Thread object
│
├─ android.os.HandlerThread instance
│    Leaking: NO (PathClassLoader↓ is not leaking)
│    Thread name: 'LeakCanary-Heap-Dump'
│    ↓ Thread.contextClassLoader
├─ dalvik.system.PathClassLoader instance
│    Leaking: NO (InternalLeakCanary↓ is not leaking and A ClassLoader is never
│    leaking)
│    ↓ ClassLoader.runtimeInternalObjects
├─ java.lang.Object[] array
│    Leaking: NO (InternalLeakCanary↓ is not leaking)
│    ↓ Object[22]
├─ leakcanary.internal.InternalLeakCanary class
│    Leaking: NO (MainActivity↓ is not leaking and a class is never leaking)
│    ↓ static InternalLeakCanary.resumedActivity
├─ com.hippo.ehviewer.ui.MainActivity instance
│    Leaking: NO (GalleryListScene↓ is not leaking and Activity#mDestroyed is
│    false)
│    mApplication instance of com.hippo.ehviewer.EhApplication
│    mBase instance of androidx.appcompat.view.ContextThemeWrapper
│    ↓ ComponentActivity.mOnConfigurationChangedListeners
├─ java.util.concurrent.CopyOnWriteArrayList instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ CopyOnWriteArrayList[4]
├─ androidx.fragment.app.FragmentManager$$ExternalSyntheticLambda0 instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ FragmentManager$$ExternalSyntheticLambda0.f$0
├─ androidx.fragment.app.FragmentManagerImpl instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ FragmentManager.mParent
├─ com.hippo.ehviewer.ui.scene.GalleryListScene instance
│    Leaking: NO (Fragment#mFragmentManager is not null)
│    Fragment.mTag=2e1ebf17-9e7a-41f9-9f36-8e85f372ced0
│    ↓ GalleryListScene.vm$delegate
│                       ~~~~~~~~~~~
├─ androidx.lifecycle.ViewModelLazy instance
│    Leaking: UNKNOWN
│    Retaining 112 B in 6 objects
│    ↓ ViewModelLazy.cached
│                    ~~~~~~
├─ com.hippo.ehviewer.ui.scene.VMStorage1 instance
│    Leaking: UNKNOWN
│    Retaining 2.3 MB in 22802 objects
│    ↓ VMStorage1.dataFlow
│                 ~~~~~~~~
├─ kotlinx.coroutines.flow.ReadonlySharedFlow instance
│    Leaking: UNKNOWN
│    Retaining 2.3 MB in 22792 objects
│    ↓ ReadonlySharedFlow.$$delegate_0
│                         ~~~~~~~~~~~~
├─ kotlinx.coroutines.flow.SharedFlowImpl instance
│    Leaking: UNKNOWN
│    Retaining 1.6 kB in 46 objects
│    ↓ AbstractSharedFlow.slots
│                         ~~~~~
├─ kotlinx.coroutines.flow.SharedFlowSlot[] array
│    Leaking: UNKNOWN
│    Retaining 1.4 kB in 40 objects
│    ↓ SharedFlowSlot[0]
│                    ~~~
├─ kotlinx.coroutines.flow.SharedFlowSlot instance
│    Leaking: UNKNOWN
│    Retaining 1.4 kB in 39 objects
│    ↓ SharedFlowSlot.cont
│                     ~~~~
├─ kotlinx.coroutines.CancellableContinuationImpl instance
│    Leaking: UNKNOWN
│    Retaining 1.4 kB in 38 objects
│    ↓ CancellableContinuationImpl._parentHandle
│                                  ~~~~~~~~~~~~~
├─ kotlinx.coroutines.ChildContinuation instance
│    Leaking: UNKNOWN
│    Retaining 56 B in 2 objects
│    ↓ JobNode.job
│              ~~~
├─ kotlinx.coroutines.internal.ScopeCoroutine instance
│    Leaking: UNKNOWN
│    Retaining 152 B in 5 objects
│    ↓ ScopeCoroutine.uCont
│                     ~~~~~
├─ kotlinx.coroutines.flow.internal.ChannelFlow$collectToFun$1 instance
│    Leaking: UNKNOWN
│    Retaining 84 B in 2 objects
│    Anonymous subclass of kotlin.coroutines.jvm.internal.SuspendLambda
│    ↓ ChannelFlow$collectToFun$1.this$0
│                                 ~~~~~~
├─ kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest instance
│    Leaking: UNKNOWN
│    Retaining 68 B in 2 objects
│    ↓ ChannelFlowTransformLatest.transform
│                                 ~~~~~~~~~
├─ kotlinx.coroutines.flow.FlowKt__MergeKt$mapLatest$1 instance
│    Leaking: UNKNOWN
│    Retaining 40 B in 1 objects
│    Anonymous subclass of kotlin.coroutines.jvm.internal.SuspendLambda
│    ↓ FlowKt__MergeKt$mapLatest$1.$transform
│                                  ~~~~~~~~~~
├─ com.hippo.ehviewer.ui.scene.GalleryListScene$onCreateViewWithToolbar$5$1$4
│  instance
│    Leaking: UNKNOWN
│    Retaining 36 B in 1 objects
│    Anonymous subclass of kotlin.coroutines.jvm.internal.SuspendLambda
│    ↓ GalleryListScene$onCreateViewWithToolbar$5$1$4.$adapter
│                                                     ~~~~~~~~
├─ com.hippo.ehviewer.ui.scene.GalleryAdapter instance
│    Leaking: UNKNOWN
│    Retaining 1.1 kB in 43 objects
│    ↓ GalleryAdapter.recyclerView
│                     ~~~~~~~~~~~~
├─ androidx.recyclerview.widget.RecyclerView instance
│    Leaking: YES (View.mContext references a destroyed activity)
│    Retaining 3.5 kB in 83 objects
│    View not part of a window view hierarchy
│    View.mAttachInfo is null (view detached)
│    View.mID = R.id.recycler_view
│    View.mWindowAttachCount = 1
│    mContext instance of com.hippo.ehviewer.ui.MainActivity with mDestroyed =
│    true
│    ↓ View.mContext
╰→ com.hippo.ehviewer.ui.MainActivity instance
​     Leaking: YES (ObjectWatcher was watching this because com.hippo.ehviewer.
​     ui.MainActivity received Activity#onDestroy() callback and
​     Activity#mDestroyed is true)
​     Retaining 13.2 kB in 277 objects
​     key = 80f8cf7b-cef4-4c4a-ad2c-7716d2759b9c
​     watchDurationMillis = 5902
​     retainedDurationMillis = 899
​     mApplication instance of com.hippo.ehviewer.EhApplication
​     mBase instance of androidx.appcompat.view.ContextThemeWrapper
┬───
│ GC Root: Thread object
│
├─ android.os.HandlerThread instance
│    Leaking: NO (PathClassLoader↓ is not leaking)
│    Thread name: 'LeakCanary-Heap-Dump'
│    ↓ Thread.contextClassLoader
├─ dalvik.system.PathClassLoader instance
│    Leaking: NO (InternalLeakCanary↓ is not leaking and A ClassLoader is never
│    leaking)
│    ↓ ClassLoader.runtimeInternalObjects
├─ java.lang.Object[] array
│    Leaking: NO (InternalLeakCanary↓ is not leaking)
│    ↓ Object[22]
├─ leakcanary.internal.InternalLeakCanary class
│    Leaking: NO (MainActivity↓ is not leaking and a class is never leaking)
│    ↓ static InternalLeakCanary.resumedActivity
├─ com.hippo.ehviewer.ui.MainActivity instance
│    Leaking: NO (GalleryListScene↓ is not leaking and Activity#mDestroyed is
│    false)
│    mApplication instance of com.hippo.ehviewer.EhApplication
│    mBase instance of androidx.appcompat.view.ContextThemeWrapper
│    ↓ ComponentActivity.mOnConfigurationChangedListeners
├─ java.util.concurrent.CopyOnWriteArrayList instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ CopyOnWriteArrayList[4]
├─ androidx.fragment.app.FragmentManager$$ExternalSyntheticLambda0 instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ FragmentManager$$ExternalSyntheticLambda0.f$0
├─ androidx.fragment.app.FragmentManagerImpl instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ FragmentManager.mParent
├─ com.hippo.ehviewer.ui.scene.GalleryListScene instance
│    Leaking: NO (GalleryListScene↓ is not leaking and
│    Fragment#mFragmentManager is not null)
│    Fragment.mTag=2e1ebf17-9e7a-41f9-9f36-8e85f372ced0
│    ↓ GalleryListScene.vm$delegate
├─ androidx.lifecycle.ViewModelLazy instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 112 B in 6 objects
│    ↓ ViewModelLazy.cached
├─ com.hippo.ehviewer.ui.scene.VMStorage1 instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 2.3 MB in 22802 objects
│    ↓ VMStorage1.dataFlow
├─ kotlinx.coroutines.flow.ReadonlySharedFlow instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 2.3 MB in 22792 objects
│    ↓ ReadonlySharedFlow.$$delegate_0
├─ kotlinx.coroutines.flow.SharedFlowImpl instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 1.6 kB in 46 objects
│    ↓ AbstractSharedFlow.slots
├─ kotlinx.coroutines.flow.SharedFlowSlot[] array
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 1.4 kB in 40 objects
│    ↓ SharedFlowSlot[0]
├─ kotlinx.coroutines.flow.SharedFlowSlot instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 1.4 kB in 39 objects
│    ↓ SharedFlowSlot.cont
├─ kotlinx.coroutines.CancellableContinuationImpl instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 1.4 kB in 38 objects
│    ↓ CancellableContinuationImpl._parentHandle
├─ kotlinx.coroutines.ChildContinuation instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 56 B in 2 objects
│    ↓ JobNode.job
├─ kotlinx.coroutines.internal.ScopeCoroutine instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 152 B in 5 objects
│    ↓ JobSupport._parentHandle
├─ kotlinx.coroutines.ChildHandleNode instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ JobNode.job
├─ kotlinx.coroutines.channels.ProducerCoroutine instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ JobSupport._parentHandle
├─ kotlinx.coroutines.ChildHandleNode instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ JobNode.job
├─ kotlinx.coroutines.internal.ScopeCoroutine instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ ScopeCoroutine.uCont
├─ com.hippo.ehviewer.ui.scene.GalleryListScene$onCreateViewWithToolbar$5$1
│  instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Anonymous subclass of kotlin.coroutines.jvm.internal.SuspendLambda
│    ↓ GalleryListScene$onCreateViewWithToolbar$5$1.this$0
├─ com.hippo.ehviewer.ui.scene.GalleryListScene instance
│    Leaking: NO (Fragment#mFragmentManager is not null)
│    Fragment.mTag=2e1ebf17-9e7a-41f9-9f36-8e85f372ced0
│    ↓ Fragment.mContainer
│               ~~~~~~~~~~
╰→ androidx.fragment.app.FragmentContainerView instance
​     Leaking: YES (ObjectWatcher was watching this because androidx.navigation.
​     fragment.NavHostFragment received Fragment#onDestroyView() callback
​     (references to its views should be cleared to prevent leaks) and View.
​     mContext references a destroyed activity)
​     Retaining 338.6 kB in 8362 objects
​     key = aea7c3cc-6be2-46cb-b4ff-e4a29b737e95
​     watchDurationMillis = 5791
​     retainedDurationMillis = 789
​     View not part of a window view hierarchy
​     View.mAttachInfo is null (view detached)
​     View.mID = R.id.fragment_container
​     View.mWindowAttachCount = 1
​     mContext instance of com.hippo.ehviewer.ui.MainActivity with mDestroyed =
​     true
┬───
│ GC Root: Thread object
│
├─ android.os.HandlerThread instance
│    Leaking: NO (PathClassLoader↓ is not leaking)
│    Thread name: 'LeakCanary-Heap-Dump'
│    ↓ Thread.contextClassLoader
├─ dalvik.system.PathClassLoader instance
│    Leaking: NO (InternalLeakCanary↓ is not leaking and A ClassLoader is never
│    leaking)
│    ↓ ClassLoader.runtimeInternalObjects
├─ java.lang.Object[] array
│    Leaking: NO (InternalLeakCanary↓ is not leaking)
│    ↓ Object[22]
├─ leakcanary.internal.InternalLeakCanary class
│    Leaking: NO (MainActivity↓ is not leaking and a class is never leaking)
│    ↓ static InternalLeakCanary.resumedActivity
├─ com.hippo.ehviewer.ui.MainActivity instance
│    Leaking: NO (GalleryListScene↓ is not leaking and Activity#mDestroyed is
│    false)
│    mApplication instance of com.hippo.ehviewer.EhApplication
│    mBase instance of androidx.appcompat.view.ContextThemeWrapper
│    ↓ ComponentActivity.mOnConfigurationChangedListeners
├─ java.util.concurrent.CopyOnWriteArrayList instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ CopyOnWriteArrayList[4]
├─ androidx.fragment.app.FragmentManager$$ExternalSyntheticLambda0 instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ FragmentManager$$ExternalSyntheticLambda0.f$0
├─ androidx.fragment.app.FragmentManagerImpl instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ FragmentManager.mParent
├─ com.hippo.ehviewer.ui.scene.GalleryListScene instance
│    Leaking: NO (GalleryListScene↓ is not leaking and
│    Fragment#mFragmentManager is not null)
│    Fragment.mTag=2e1ebf17-9e7a-41f9-9f36-8e85f372ced0
│    ↓ GalleryListScene.vm$delegate
├─ androidx.lifecycle.ViewModelLazy instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 112 B in 6 objects
│    ↓ ViewModelLazy.cached
├─ com.hippo.ehviewer.ui.scene.VMStorage1 instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 2.3 MB in 22802 objects
│    ↓ VMStorage1.dataFlow
├─ kotlinx.coroutines.flow.ReadonlySharedFlow instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 2.3 MB in 22792 objects
│    ↓ ReadonlySharedFlow.$$delegate_0
├─ kotlinx.coroutines.flow.SharedFlowImpl instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 1.6 kB in 46 objects
│    ↓ AbstractSharedFlow.slots
├─ kotlinx.coroutines.flow.SharedFlowSlot[] array
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 1.4 kB in 40 objects
│    ↓ SharedFlowSlot[0]
├─ kotlinx.coroutines.flow.SharedFlowSlot instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 1.4 kB in 39 objects
│    ↓ SharedFlowSlot.cont
├─ kotlinx.coroutines.CancellableContinuationImpl instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 1.4 kB in 38 objects
│    ↓ CancellableContinuationImpl._parentHandle
├─ kotlinx.coroutines.ChildContinuation instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 56 B in 2 objects
│    ↓ JobNode.job
├─ kotlinx.coroutines.internal.ScopeCoroutine instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Retaining 152 B in 5 objects
│    ↓ JobSupport._parentHandle
├─ kotlinx.coroutines.ChildHandleNode instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ JobNode.job
├─ kotlinx.coroutines.channels.ProducerCoroutine instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ JobSupport._parentHandle
├─ kotlinx.coroutines.ChildHandleNode instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ JobNode.job
├─ kotlinx.coroutines.internal.ScopeCoroutine instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    ↓ ScopeCoroutine.uCont
├─ com.hippo.ehviewer.ui.scene.GalleryListScene$onCreateViewWithToolbar$5$1
│  instance
│    Leaking: NO (GalleryListScene↓ is not leaking)
│    Anonymous subclass of kotlin.coroutines.jvm.internal.SuspendLambda
│    ↓ GalleryListScene$onCreateViewWithToolbar$5$1.this$0
├─ com.hippo.ehviewer.ui.scene.GalleryListScene instance
│    Leaking: NO (Fragment#mFragmentManager is not null)
│    Fragment.mTag=2e1ebf17-9e7a-41f9-9f36-8e85f372ced0
│    ↓ Fragment.mParentFragment
│               ~~~~~~~~~~~~~~~
╰→ androidx.navigation.fragment.NavHostFragment instance
​     Leaking: YES (ObjectWatcher was watching this because androidx.navigation.
​     fragment.NavHostFragment received Fragment#onDestroy() callback and
​     Fragment#mFragmentManager is null)
​     Retaining 2.0 kB in 70 objects
​     key = ccef43aa-e7af-4324-aa2e-bcb1bddefecd
​     watchDurationMillis = 5785
​     retainedDurationMillis = 783
┬───
│ GC Root: Thread object
│
├─ android.net.ConnectivityThread instance
│    Leaking: NO (PathClassLoader↓ is not leaking)
│    Thread name: 'ConnectivityThread'
│    ↓ Thread.contextClassLoader
├─ dalvik.system.PathClassLoader instance
│    Leaking: NO (DownloadManager↓ is not leaking and A ClassLoader is never
│    leaking)
│    ↓ ClassLoader.runtimeInternalObjects
├─ java.lang.Object[] array
│    Leaking: NO (DownloadManager↓ is not leaking)
│    ↓ Object[2159]
├─ com.hippo.ehviewer.download.DownloadManager class
│    Leaking: NO (DownloadsScene↓ is not leaking and a class is never leaking)
│    ↓ static DownloadManager.mDownloadInfoListeners
├─ java.util.ArrayList instance
│    Leaking: NO (DownloadsScene↓ is not leaking)
│    ↓ ArrayList[1]
├─ com.hippo.ehviewer.ui.scene.DownloadsScene instance
│    Leaking: NO (FragmentContainerView↓ is not leaking and
│    Fragment#mFragmentManager is not null)
│    Fragment.mTag=0f77fb06-a118-4e37-9677-ba3056f3c5cb
│    ↓ Fragment.mContainer
├─ androidx.fragment.app.FragmentContainerView instance
│    Leaking: NO (View attached)
│    View is part of a window view hierarchy
│    View.mAttachInfo is not null (view attached)
│    View.mID = R.id.fragment_container
│    View.mWindowAttachCount = 1
│    mContext instance of com.hippo.ehviewer.ui.MainActivity with mDestroyed =
│    false
│    ↓ FragmentContainerView.disappearingFragmentChildren
│                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
├─ java.util.ArrayList instance
│    Leaking: UNKNOWN
│    Retaining 188.8 kB in 4756 objects
│    ↓ ArrayList[0]
│               ~~~
╰→ androidx.coordinatorlayout.widget.CoordinatorLayout instance
​     Leaking: YES (ObjectWatcher was watching this because com.hippo.ehviewer.
​     ui.scene.DownloadsScene received Fragment#onDestroyView() callback
​     (references to its views should be cleared to prevent leaks))
​     Retaining 188.7 kB in 4754 objects
​     key = 0e5958d6-d830-4156-96d8-50cfb29af6aa
​     watchDurationMillis = 19180
​     retainedDurationMillis = 13570
​     View not part of a window view hierarchy
​     View.mAttachInfo is null (view detached)
​     View.mWindowAttachCount = 1
​     mContext instance of com.hippo.ehviewer.ui.MainActivity with mDestroyed =
​     false

应用日志 / App logs

No response

备注 / Addition details

No response

EhViewer 版本号 / EhViewer version code

1.8.9.0-SNAPSHOT

EhViewer CI 版本 / EhViewer CI Version

5422c04

Android 系统版本 / Android version

14

设备型号 / Device model

sdk_gphone64_x86_64

SoC 型号 / Soc model

/

自查步骤 / Verify steps

  • 如果您有足够的时间和能力,并愿意为此提交 PR ,请勾上此复选框 / Pull request is welcome. Check this if you want to start a pull request
  • 您已仔细查看并知情 Q&A 中的内容 / You have checked Q&A carefully
  • 您已搜索过 Issue Tracker,没有找到类似内容 / I have searched on Issue Tracker, No duplicate or related open issue has been found
  • 您确保这个 Issue 只提及一个问题。如果您有多个问题报告,烦请发起多个 Issue / Ensure there is only one bug report in this issue. Please make mutiply issue for mutiply bugs
  • 您确保已使用最新 CI 版本测试,并且该问题在最新 CI 版本中并未解决 / This bug have not solved in latest CI version
@FooIbar FooIbar added the bug Something isn't working label Aug 4, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working
Projects
Development

No branches or pull requests

1 participant