Slide 1

Slide 1 text

High Performance Android Masahiro Hidaka @mhidaka

Slide 2

Slide 2 text

自己紹介 TechBooster 主催 Androidエンジニア アプリから下回りまで 技術大好き。だいぶ古参です。

Slide 3

Slide 3 text

宣伝:コミケ88 3日目東A-39a

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

スピーカーのスタンス ひつじはAndroid原理主義者です! 便利なライブラリもいいんだけど Androidアプリの挙動を理解した開発を 心がけてます 「アプリがなぜ動くのか」コアな話が出 来たほうが楽しいよね

Slide 6

Slide 6 text

本日のスコープ パフォーマンス CPU メモリ管理 I/O ネットワーク それぞれ依存 がある

Slide 7

Slide 7 text

課題と手法 技術は課題を解決するもの 技術の話をするときは、 解決したい課題を明確にする 「何に困っているのか」 「何を解決したいのか」 今回はメモリの観点からパフォーマンスを 確認したい

Slide 8

Slide 8 text

なぜパフォーマンスの話をするの? 突然の死!! 動作が緩慢になりUXが低下 OutOfMemoryでの強制終了 前述の4領域のどれかに負荷をかける アプリで考慮の余地 原因を特定し、対策を見つける

Slide 9

Slide 9 text

Android Studio 1.3 new memory viewer いままでは 非ネイティブ

Slide 10

Slide 10 text

Androidのメモリ管理 Object o = new Object(); オブジェクト 生成

Slide 11

Slide 11 text

Androidのメモリ管理 Object o = new Object(); Object 参照を数える

Slide 12

Slide 12 text

Androidのメモリ管理 Object o = null; Object 参照がないと メモリ開放!

Slide 13

Slide 13 text

Sample – DisplayingBitmaps Android Demo リストでの画像読み込み

Slide 14

Slide 14 text

How to Memory Viewer メモリ使用量 Freeと Allocated

Slide 15

Slide 15 text

How to Memory Viewer

Slide 16

Slide 16 text

How to Memory Viewer 初期化(GC) Dump Tracking

Slide 17

Slide 17 text

How to Memory Viewer ビジュアライ ゼーション!

Slide 18

Slide 18 text

Android 5.1.1 / Nexus 5 オブジェクト生成の特性 private void alloc () { long start = System.currentTimeMillis(); for(int i=0; i<1024*256; i++) { temp.add(new Integer(i)); } long end = System.currentTimeMillis(); Log.d("TAG", (end - start) + "ms"); } 検証する

Slide 19

Slide 19 text

ARTのオブジェクト生成とGC メモリ使用量 (MB) Object GC malloc 4MB (ms) count Sticky (ms) Partial (ms) Explicit (ms) 16 130 262144 60 59 63 32 138 1048576 154 159 116 64 146 2359296 277 194 181 128 146 5242880 280 441 369

Slide 20

Slide 20 text

補足:GCの種類 マルチコアの 恩恵で止まり にくい Sticky 前回のGCからの差分が対象 Partial 部分的GC(世代別Mark&Sweep) Explicit 全対象GC( System.gc(); )

Slide 21

Slide 21 text

ARTのオブジェクト生成とGC – large memory メモリ使用量 (MB) Object GC(ms) malloc 4MB count sticky partial Explicit 16 125 262144 81 57 63 32 107 1048576 133 134 101 64 124 2359296 298 175 221 128 140 5242880 372 324 499 256 240 10485760 745 901 750 512 145 20971520 2800 2337 2430

Slide 22

Slide 22 text

まとめ パフォーマンス(メモリ) Memory Viewerの使い方 ART環境におけるGC評価 メモリ以外についてはトレース ビューが便利

Slide 23

Slide 23 text

Reference  http://tools.android.com/recent  http://android-developers.blogspot.jp/2015/07/get-your- hands-on-android-studio-13.html