Jetpack Compose implementation
This page includes information about finding and triggering memory leaks that is unique to View-based layouts. For the core information about capturing and analyzing heap dumps, see Capture a heap dump.
Find memory leaks
To quickly filter to classes that might be associated with memory leaks, open
the class drop-down and select Show activity/fragment leaks. Android Studio
shows classes that it thinks indicate memory leaks for
Activity and
Fragment instances in your app. The types
of data that the filter shows include the following:
Activityinstances that have been destroyed but are still being referenced.Fragmentinstances that don't have a validFragmentManagerbut are still being referenced.
Be aware that the filter might yield false positives in the following situations:
- A
Fragmentis created but has not yet been used. - A
Fragmentis being cached but not as part of aFragmentTransaction.
To look for memory leaks more manually, browse the class and instance lists to find objects with large Retained Size. Look for memory leaks caused by any of the following:
- Long-lived references to
Activity,Context,View,Drawable, and other objects that might hold a reference to theActivityorContextcontainer. - Non-static inner classes, such as a
Runnable, that can hold anActivityinstance. - Caches that hold objects longer than necessary.
When you find potential memory leaks, use the Fields and References tabs in Instance Details to jump to the instance or source code line of interest.
Trigger memory leaks for testing
To provoke memory leaks to test in your app, you can trigger leaks in one of the following ways:
- Rotate the device from portrait to landscape and back again multiple times
while in different activity states. Rotating the device can often cause an app
to leak an
Activity,Context, orViewobject because the system recreates theActivity, and if your app holds a reference to one of those objects somewhere else, the system can't garbage collect it. - Switch between your app and another app while in different activity states. For example, navigate to the home screen, then return to your app.