Slide 1

Slide 1 text

ϝϞϦϦʔΫΛؾܰʹ֬ ೝ͢Δ-FBL$IFDLFSͷ࿩ QPUBUPUJQT 5PTIJIJSP:BHJ

Slide 2

Slide 2 text

"CPVUNF 5XJUUFS!TZTZBHJ #MPHIUUQTZTZBHJDPN ! ! "OESPJE&OHJOFFSBU

Slide 3

Slide 3 text

ϝϞϦϦʔΫͷνΣο Ϋͬͯେมͩͳ͊

Slide 4

Slide 4 text

طଘπʔϧେม w 5SBDFWJFXͱ͔.FNPSZ"OBMZ[FS͸ͳΜ͔ΊΜͲ ͍͘͞

Slide 5

Slide 5 text

΋ͬͱΧδϡΞϧʹ͍ͨ͠

Slide 6

Slide 6 text

΋ͬͱΧδϡΞϧʹ͠Α͏

Slide 7

Slide 7 text

-FBL$IFDLFS https://github.com/sys1yagi/leak-checker

Slide 8

Slide 8 text

.PEVMFT LeakCheker MemoryUsage ϦʔΫΛνΣοΫ͢Δਓ ΞϓϦͷϝϞϦ࢖༻ঢ়گΛڭ͑ͯ͘ΕΔਓ W ILogger ϩάΛు͘ਓ

Slide 9

Slide 9 text

-FBL$IFDLFS LeakCheker MemoryUsage ILogger App add object start monitoring output output

Slide 10

Slide 10 text

%&.0

Slide 11

Slide 11 text

4FUVQ apply plugin: 'android' ! repositories { mavenCentral() maven { url 'https://raw.github.com/sys1yagi/leak-checker/master/repository' } } dependencies { compile 'com.sys1yagi:leak-checker:0.0.1' } 3FGFSFODF3FQPTJUPSZ %FQFOEFODJFT

Slide 12

Slide 12 text

.FNPSZ6TBHF @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MemoryUsage.startPrintMemoryUsage(); } ! @Override public void onDestroy() { super.onDestroy(); MemoryUsage.stopPrintMemoryUsage(); } TUBSUTUPQ

Slide 13

Slide 13 text

-FBL$IFLFS LeakChecker.addLeakChecker(bitmap) LeakChecker.dump() SFHJTUFSPCKFDUT EVNQUIFPCKFDUPGPONFNPSZ

Slide 14

Slide 14 text

$VTUPN-PHHFS public class TextViewMonitorLogger implements ILogger { private TextView target; ! public TextViewMonitorLogger(TextView target) { this.target = target; } ! @Override public void print(String tag, String message) { target.setText(message); } } LeakChecker.setLogger(logger); MemoryUsage.setLogger(logger); JNQMFNFOU*-PHHFS VTFDVTUPNMPHHFS

Slide 15

Slide 15 text

·ͱΊ w .FNPSZ6TBHF w ΞϓϦͷϝϞϦ࢖༻ঢ়گΛऔΕΔ w -FBL$IFDLFS w ΦϒδΣΫτΛ؂ࢹͰ͖Δ w EVNQͯ͠ϦʔΫͯ͠Δ͔νΣοΫʂʂ w *-PHHFS w *-PHHFSΛ࣮૷͢Ε͹Ͳ͜ʹͰ΋ग़ͤΔ

Slide 16

Slide 16 text

͋Γ͕ͱ͏͍͟͝·ͨ͠

Slide 17

Slide 17 text

8FBSFIJSJOH IUUQTJOGPDPPLQBEDPNKPCTQPTJUJPOJPTBOESPJEBQQFOHJOFFS