Memory Leak Analysis in Android Games

18
Memory Leak Analysis in Android Games Heghine Hakobyan Software Engineer

Transcript of Memory Leak Analysis in Android Games

Page 1: Memory Leak Analysis in Android Games

Memory Leak Analysisin

Android Games

Heghine HakobyanSoftware Engineer

Page 2: Memory Leak Analysis in Android Games

Why we need memory analysis?

● Low FPS

● Frequent Freezes

● Out of Memories

Page 3: Memory Leak Analysis in Android Games

Why we need memory analysis?

Improved Performance

Happy Users

No Memory Leaks

Page 4: Memory Leak Analysis in Android Games

Problems to Consider

● A lot of consequent GC calls

- because of temporary allocations

● Not enough memory

- for permanent objects

Page 5: Memory Leak Analysis in Android Games

Garbage Collector

GC_CONCURENT freed 24K, 18% free 1572K/19207K, paused 1ms+4ms

Page 6: Memory Leak Analysis in Android Games

How GC works?

exampleA

exampleB......

exampleA is dominator of exampleB

Page 7: Memory Leak Analysis in Android Games

Dominator Tree in GC

exampleA

exampleB......

r

...

a

...

......

Page 8: Memory Leak Analysis in Android Games

Dominator Tree in GC

exampleA

exampleB......

r

...

a

...

......

Page 9: Memory Leak Analysis in Android Games

Allocation Tracker

Shows where and what type of objects are being allocated at current time

Page 10: Memory Leak Analysis in Android Games

Going Deeper: Heap Dump

Gives huge amount of statistical information about your game’s current heap state

Use it withEclipse Memory Analyzer (MAT)

Page 11: Memory Leak Analysis in Android Games

Heap Dump Components

DominatorTree

HistogramView

Heap Dump

Page 12: Memory Leak Analysis in Android Games

Heap Dump Example

Page 13: Memory Leak Analysis in Android Games

Example Game

Page 14: Memory Leak Analysis in Android Games

Obstacle

Target

Soldiers

Vikings Battle

Page 15: Memory Leak Analysis in Android Games

The Problem

● A lot of soldiers (~300)

● Moving from start position to target

● Using A* path finding algorithm

Low Performance

Page 16: Memory Leak Analysis in Android Games

Soldier Statistics

Type Bowman

Shallow Heap 312 b

Retained Heap ~22 kb

Animation Component

Retained Heap~20 kb

Page 17: Memory Leak Analysis in Android Games

Solution: Object Pooling

Bowman b = getSoldierFromPool();b.initialize();

Use object as you need

b.reset();

Heap

Page 18: Memory Leak Analysis in Android Games

Thank You!!!

Remember!Memory Analysis are

IMPORTANT!

Questions?