• Like
Eclipse Memory Analyzer Tool
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Eclipse Memory Analyzer Tool


This presentation is a basic introduction to MAT. Talks about the basic concepts in Heap Analysis.

This presentation is a basic introduction to MAT. Talks about the basic concepts in Heap Analysis.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads


Total Views
On SlideShare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide


  • 1. Eclipse Memory Analyzer Tool Lakshman Kakkirala little eye labs
  • 2. Agenda● Memory Analysis● Some Definitions● An example leak code● Demo of MAT and some basic functionality
  • 3. Prereqs● Android app development● Basic Heap and Garbage CollectionDisqualification● Advanced knowledge of MAT :-)
  • 4. littleEye appInsightCT Scanner for your app http://www.littleeye.co
  • 5. Why Memory Analysis?● Identify Leaks● Reduce memory footprint
  • 6. Typical problems● Holding Context object (an Activity, a View or a Drawable) which actually happens to be an Activity● Non-static inner classes● Caches● Aggressive Caching
  • 7. Some definitions● Shallow Size● Retained Size● Dominator● Dominator Tree● GCRoots
  • 8. Example - Object Graph E B 100 100 100 300 A F 100 100 C 100 600 100 200 D 100 100
  • 9. Example (contd) - Dominator Tree E B F A C D
  • 10. Example - Memory Leakpublic class MainActivity extends Activity { private static LeakClass leak; // *NOT A STATIC* class LeakClass { } @Override public void onCreate(Bundle savedInstanceState) { .... if (leak == null) { leak = new LeakClass(); } ... }}
  • 11. Investigation Tools - LogCat● D/dalvikvm( 9050 ): GC_CONCURRENT freed 2049K, 65% free 3571K/9991K, external 4703K/5261K, paused 2ms+2ms
  • 12. Heapdump● What - Snapshot of all the objects in the process ○ Fields, References, Primitive Values ○ Classes, Class Loaders● How to generate ○ DDMS view - "Dump HPROF file" icon ○ android.os.Debug.dumpHprofData(<filename>) ○ signal 10● Convert to standard HPROF format ○ hprof-convert (only required if using standalone)
  • 13. MAT aka Eclipse Memory AnalyzerTool● Standalone - Download http://www.eclipse.org/mat● Pros ○ Visible Primitive Data ○ Powerful selection model ○ No setup● Cons ○ Large dump files ○ Cannot answer code/temporal questions ■ Who/Where/When - an object is created ■ When - an object is garbage collected
  • 14. DemoCovering● View Dominator Tree● Inspector ○ look at the field values ○ browse through entries in a Collection● Class Histograms● Group by Value
  • 15. Demo (contd...)● Immediate Dominators● Path from GC roots● Retained Set● Object Query Language
  • 16. References● Google IO 2011 - "Memory Management for Android apps" http://www.google. com/events/io/2011/sessions/memory-management-for- android-apps.html● Java Memory Analysis http://vimeo.com/21356498● Markus Kohlers Java Performance Blog http://kohlerm.blogspot.com● Memory Analyzer Blog http://memoryanalyzer.blogspot.in/
  • 17. Backup SlidesApplication Attributes:<application android:largeHeap="true">
  • 18. Garbage CollectionPre Gingerbread:GC: stop the world gc, >100msGingerbread and beyond:concurrent gc,two pauses - at the beginning and at the end < 5mspartial collections
  • 19. Bitmappre-honeycomb:● pixel data was stored in native mem● recycle() or finalize()● invisible to MAThoneycomb and after:● pixel data inside dalvik heap● visible to MAT● works with partial and concurrent GC
  • 20. Typical Garbage CollectionsGC_CONCURRENTGC_FOR_MALLOCGC_EXTERNAL_ALLOC (pre-honeycomb)GC_HPROF_DUMP_HEAPGC_EXPLICIT - app calling System.gc()