Open
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