In Android Studio, click
Android Monitor at the bottom of your screen. Click the tab
Monitors. You see a graph of the memory that your app uses. Now click the item
Dump Java Heap which is next to the garbage van. The system starts collecting the info and creates a dump file. You can open the file in the
Analyze Tasks tab in the upper right of your Android Studio window. Press the green arrow to find classes that leak memory. When you click a leaking activity, you’ll see a window
Reference Tree. Go through the tree, finding the member that has depth zero. That’s the memory leak.
Analyse your code and images if anything wrong you are doing itself. Like very large images of drawables. make sure you correctly implement recycler or list views.
The following links may helpful to you.
Use leakcanary library to detect and make sure there is not leaks
Detect when user kill app from reccent apps
Invoke gc from memory monitor comes with Android Studio for correct value of memory usage cause gc not run frequently.
Use large heap size.
<application android:largeHeap="true"in manifest
Use app context to start services