18

I am New to this Android platfrom. In one application, there is a memory leak. But i couldn't able to find in which actiity or class the memory leak is happening.

I am using MAT to get the infirmation that the memory leak is there or not. But not able to find which activity is leaking.

Please tell me how to find the which activity is leaking.

Thanks.

user388269
  • 363
  • 2
  • 5
  • 10

6 Answers6

35

Even if this question is quiet old. I think a small tutorial with images might be helpful. So first you need to install the MAT plugin. After a restart click on Dump HPROF file:

Device controls

After some time (about 30 seconds) you'll get a dialog where you can click on finish. Than you get this view:

Dump result

There you left click on the biggest part and filter for with outgoing references. Then you get this view here:

Here you can see that I missed to delete items in my ContentManager where several items were stored in my pending HashMap.

Paul-Jan
  • 16,746
  • 1
  • 63
  • 95
rekire
  • 47,260
  • 30
  • 167
  • 264
5

The best post I found yet on tracking memory leaks on android platforms is:

http://ttlnews.blogspot.com/2010/01/attacking-memory-problems-on-android.html

The first part is outdated because it's now integrated into Eclipse but most of the post is great!

ol_v_er
  • 27,094
  • 6
  • 48
  • 61
4

Use LeakCanary - a memory leak detection library for Android and Java. LeakCanary will automatically show a notification when an activity memory leak is detected in your debug build. Installing this library is very simple.

https://github.com/square/leakcanary

Notification example:

enter image description here

Kiryl Bielašeŭski
  • 2,663
  • 2
  • 28
  • 40
2

I can't comment on the previous post, but it's important to realise that you absolutely should worry about memory management, especially on the resource-confined environment that is the Android mobile platform. For more on that, check here:

http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html

jelford
  • 2,625
  • 1
  • 19
  • 33
0

You can see it in the DDMS.

Simply select your app package name and click update heap the above button.

Now goto Heap Tab click Cause GC.

you will find the listing of objects used.

Jana
  • 2,890
  • 5
  • 35
  • 45
0

You can analysis android memory leaks automatically with MMAT,MMAT github page

Phil
  • 201
  • 1
  • 7