45
Memory Management in Android Hirbod Kamalinia Keyhan Asghari

Memory management in Android

Embed Size (px)

Citation preview

Memory Management in Android

Hirbod Kamalinia Keyhan Asghari

Why?

• OutOfMemoryError

• Bad user experiences

• Lags

• ...

Memory Structure

Memory Structure

Memory Handling

• C++, manual handling

• Java, Garbage Collection

• Android, Improved GC

Garbage CollectionGC Roots

Garbage CollectionGC Roots

Garbage CollectionGC Roots

Garbage CollectionGC Roots

Garbage CollectionGC Roots

Everything OK?

NO!

Remaining Problems?

• Memory Churn

• Memory Leak

Memory LeakGC Roots

Memory LeakGC Roots

How?

• Concepts

• Useful Tools

Objects in Heap

• Shallow Heap

• Retained Heap

Shallow heap & Retained heap

Shallow heap & Retained heap

100

100

100

100

Shallow heap & Retained heap

100

100

100

100

Shallow heap & Retained heap

100

100

100

100

Retained = 100

Shallow heap & Retained heap

100

100

100

100

Shallow heap & Retained heap

100

100

100

100

Retained = 100

Shallow heap & Retained heap

100

100

100

100

Shallow heap & Retained heap

100

100

100

100

Shallow heap & Retained heap

100

100

100

100

Retained = 100 + 100

Shallow heap & Retained heap

100

100

100

100

Retained = 200

Shallow heap & Retained heap

100

100

100

100

Shallow heap & Retained heap

100

100

100

100Retained = 100+ 100+ 100+ 100

Shallow heap & Retained heap

100

100

100

100Retained = 400

Dominator Tree

How to find these relations?

Dominator Tree

A

C

B

E

D

Dominator: closest object on every path to node

A

B DC

E

Useful Tools

• Android Studio Memory Monitor

• DDMS Heap tools and Allocation Tracker

• Eclipse Memory Analyzer (MAT)

• ...

Android Studio Memory Monitor

Android Studio Memory Monitor

Free and Allocated Memory

Android Studio Memory Monitor

GC Executions

Android Studio Memory Monitor

Memory Allocation Level ChangedMemory Allocation Level Changed

Android Studio Memory Monitor

Call GC Explicitly

Android DDMS

Android DDMS

Useful Tools!

Android DDMS

Call GC Explicitly

Android DDMS

Dump Java Heap

Eclipse Memory Analyzer (MAT)

DEMO...

What NOT to do?• Static References

• Inner Classes

• Reference to Context

• Adapters

• ....

Memory matters!

Thanks for your interest...

Useful links

• http://goo.gl/xb57Df

• http://goo.gl/o5O2ON

• http://goo.gl/8BqmCB