Skip to content

Memory leak: ProductListFragment.skeletonView #3510

Open
@0nko

Description

To be triaged:

┬───
│ GC Root: Local variable in native code
│
├─ android.os.HandlerThread instance
│    Leaking: NO (PathClassLoader↓ is not leaking)
│    Thread name: 'LeakCanary-Heap-Dump'
│    ↓ HandlerThread.contextClassLoader
├─ dalvik.system.PathClassLoader instance
│    Leaking: NO (InternalLeakCanary↓ is not leaking and A ClassLoader is never
│    leaking)
│    ↓ PathClassLoader.runtimeInternalObjects
├─ java.lang.Object[] array
│    Leaking: NO (InternalLeakCanary↓ is not leaking)
│    ↓ Object[].[1761]
├─ leakcanary.internal.InternalLeakCanary class
│    Leaking: NO (MainActivity↓ is not leaking and a class is never leaking)
│    ↓ static InternalLeakCanary.resumedActivity
├─ com.woocommerce.android.ui.main.MainActivity instance
│    Leaking: NO (ProductListFragment↓ is not leaking and Activity#mDestroyed
│    is false)
│    mApplication instance of com.woocommerce.android.WooCommerceDebug
│    mBase instance of androidx.appcompat.view.ContextThemeWrapper, not
│    wrapping known Android context
│    ↓ MainActivity.navController
├─ androidx.navigation.NavHostController instance
│    Leaking: NO (ProductListFragment↓ is not leaking)
│    mActivity instance of com.woocommerce.android.ui.main.MainActivity with
│    mDestroyed = false
│    mContext instance of com.woocommerce.android.ui.main.MainActivity with
│    mDestroyed = false
│    ↓ NavHostController.mNavigatorProvider
├─ androidx.navigation.NavigatorProvider instance
│    Leaking: NO (ProductListFragment↓ is not leaking)
│    ↓ NavigatorProvider.mNavigators
├─ java.util.HashMap instance
│    Leaking: NO (ProductListFragment↓ is not leaking)
│    ↓ HashMap.table
├─ java.util.HashMap$Node[] array
│    Leaking: NO (ProductListFragment↓ is not leaking)
│    ↓ HashMap$Node[].[1]
├─ java.util.HashMap$Node instance
│    Leaking: NO (ProductListFragment↓ is not leaking)
│    ↓ HashMap$Node.next
├─ java.util.HashMap$Node instance
│    Leaking: NO (ProductListFragment↓ is not leaking)
│    ↓ HashMap$Node.value
├─ com.woocommerce.android.navigation.KeepStateNavigator instance
│    Leaking: NO (ProductListFragment↓ is not leaking)
│    context instance of com.woocommerce.android.ui.main.MainActivity with
│    mDestroyed = false
│    mContext instance of com.woocommerce.android.ui.main.MainActivity with
│    mDestroyed = false
│    ↓ KeepStateNavigator.lastTopLevelFragment
├─ com.woocommerce.android.ui.products.ProductListFragment instance
│    Leaking: NO (Fragment#mFragmentManager is not null)
│    Fragment.mTag=2131362931
│    ↓ ProductListFragment.skeletonView
│                          ~~~~~~~~~~~~
├─ com.woocommerce.android.widgets.SkeletonView instance
│    Leaking: UNKNOWN
│    Retaining 1778349 bytes in 29549 objects
│    ↓ SkeletonView.parentView
│                   ~~~~~~~~~~
├─ androidx.constraintlayout.widget.ConstraintLayout instance
│    Leaking: UNKNOWN
│    Retaining 6171 bytes in 143 objects
│    View not part of a window view hierarchy
│    View.mAttachInfo is null (view detached)
│    View.mWindowAttachCount = 1
│    mContext instance of com.woocommerce.android.ui.main.MainActivity with
│    mDestroyed = false
│    ↓ ConstraintLayout.mParent
│                       ~~~~~~~
╰→ com.woocommerce.android.widgets.ScrollChildSwipeRefreshLayout instance
​     Leaking: YES (ObjectWatcher was watching this because com.woocommerce.
​     android.ui.products.ProductListFragment received Fragment#onDestroyView()
​     callback (references to its views should be cleared to prevent leaks))
​     Retaining 4880 bytes in 122 objects
​     key = b3357925-210c-4483-beff-eef5f252b79d
​     watchDurationMillis = 184363
​     retainedDurationMillis = 179363
​     View not part of a window view hierarchy
​     View.mAttachInfo is null (view detached)
​     View.mID = R.id.productsRefreshLayout
​     View.mWindowAttachCount = 1
​     mContext instance of com.woocommerce.android.ui.main.MainActivity with
​     mDestroyed = false

METADATA

Build.VERSION.SDK_INT: 30
Build.MANUFACTURER: Google
LeakCanary version: 2.5
App process name: com.woocommerce.android.prealpha
Stats: LruCache[maxSize=3000,hits=11196,misses=174583,hitRate=6%]
RandomAccess[bytes=8880754,reads=174583,travel=90280164725,range=34347600,size=4
2018091]
Analysis duration: 7069 ms

Metadata

Assignees

No one assigned

    Labels

    type: bugA confirmed bug.type: technical debtRepresents or solves tech debt of the project.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions