Eclipse Memory Analyzer Tool
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Eclipse Memory Analyzer Tool

on

  • 7,410 views

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.

Statistics

Views

Total Views
7,410
Views on SlideShare
5,640
Embed Views
1,770

Actions

Likes
4
Downloads
99
Comments
0

12 Embeds 1,770

http://www.littleeye.co 1493
http://leltest.com 78
http://leltest.adityapk.com 51
http://hasgeek.tv 50
http://funnel.hasgeek.com 40
https://hasgeek.tv 31
https://funnel.hasgeek.com 7
http://test.littleeyelabs.com 6
https://twitter.com 6
http://localhost 5
http://palantir.littleeyelabs.com 2
http://ec2-174-129-84-150.compute-1.amazonaws.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Eclipse Memory Analyzer Tool Presentation Transcript

  • 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()