SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Downloaden Sie, um offline zu lesen
Memory Tuning
Android for Low-RAM
Devices
Chris Kühl & Iago López Galeiras, Endocode AG
What's low-RAM?
< 512MB
512MB? That's so 2012!
Why do that to yourself?
You have no choice ;)
Mod-maintainer for older device
Android on embedded devices
Virtualized Android, anyone?
What to tune?
Apps
Dalvik VM
Activity Manager
Linux kernel
Apps
Be a good citizen
Apps that manage their own memory well make the whole
system run better
Keep Your Apps Trim
Google says,
You should implement onTrimMemory(int) to
incrementally release memory based on current
system constraints.
7 Trim Levels
Running Cached
TRIM_MEMORY_RUNNING_MODERATE TRIM_MEMORY_BACKGROUND
TRIM_MEMORY_RUNNING_LOW TRIM_MEMORY_MODERATE
TRIM_MEMORY_RUNNING_CRITICAL TRIM_MEMORY_COMPLETE
...and TRIM_MEMORY_UI_HIDDEN
TRIM_MEMORY_COMPLETE ≈ onLowMemory
Dalvik VM
Android Java VM
DEX format
Zygote
Dalvik is chatty
Dalvik's logcat output can paint a pretty good picture.
12-3015:35:43.135:D/dalvikvm(15368):GC_EXPLICITfreed39K,66%free2349K/6788K,p
aused24ms+8ms,total129ms
12-3015:35:43.682:D/dalvikvm(15368):GC_CONCURRENTfreed282K,5%free10382K/10823
K,paused5ms+4ms
12-3015:35:44.043:D/dalvikvm(15368):GC_CONCURRENTfreed319K,5%free10507K/10951
K,paused3ms+3ms
12-3015:35:44.723:D/dalvikvm(15368):GC_CONCURRENTfreed364K,5%free10568K/11079
K,paused3ms+4ms
12-3015:35:44.803:D/dalvikvm(15368):GC_FOR_ALLOCfreed312K,6%free10549K/11207K
,paused31ms
12-3015:35:45.034:D/dalvikvm(15368):GC_FOR_ALLOCfreed316K,6%free10542K/11207K
,paused48ms
12-3015:35:45.074:D/dalvikvm(15368):GC_FOR_ALLOCfreed1K,6%free10631K/11207K,
paused43ms
Dalvik Properties
Generally set these in PRODUCT_PROPERTY_OVERRIDES.
PRODUCT_PROPERTY_OVERRIDES:=
dalvik.vm.heapstartsize=5m
dalvik.vm.heapgrowthlimit=64m
dalvik.vm.heapsize=128m
dalvik.vm.heaptargetutilization=0.80
dalvik.vm.heapminfree=512k
dalvik.vm.heapmaxfree=2m
Dalvik VM - JIT
Google says...
For the really low-memory devices, we recommend
the JIT be disabled entirely.
Can save up to 1.5MB per process!
ActivityManager
Managing activities since 2008
ActivityManager & Memory
management
Continually ranks apps based on their importance to the user.
Adjustments
staticfinalintHIDDEN_APP_MAX_ADJ=15;
staticintHIDDEN_APP_MIN_ADJ=9;
staticfinalintSERVICE_B_ADJ=8;
staticfinalintPREVIOUS_APP_ADJ=7;
staticfinalintHOME_APP_ADJ=6;
staticfinalintSERVICE_ADJ=5;
staticfinalintBACKUP_APP_ADJ=4;
staticfinalintHEAVY_WEIGHT_APP_ADJ=3;
staticfinalintPERCEPTIBLE_APP_ADJ=2;
staticfinalintVISIBLE_APP_ADJ=1;
staticfinalintFOREGROUND_APP_ADJ=0;
staticfinalintPERSISTENT_PROC_ADJ=-12;
staticfinalintSYSTEM_ADJ=-16;
lowmemorykiller
A kernel module to preempt the oom and provide an interface
for user-space to prioritize apps
cat/sys/module/lowmemorykiller/parameters/adj
0,1,2,4,9,15
cat/sys/module/lowmemorykiller/parameters/minfree
3031,4218,5406,7454,8642,10158
Configuring
lowmemorykiller
privatefinalint[]mOomAdj=newint[]{
FOREGROUND_APP_ADJ,VISIBLE_APP_ADJ,PERCEPTIBLE_APP_ADJ,
BACKUP_APP_ADJ,HIDDEN_APP_MIN_ADJ,HIDDEN_APP_MAX_ADJ
};
privatefinallong[]mOomMinFreeLow=newlong[]{
8192,12288,16384,
24576,28672,32768
};
privatefinallong[]mOomMinFreeHigh=newlong[]{
32768,40960,49152,
57344,65536,81920
};
dumpsys meminfo
TotalPSSbyOOMadjustment:
18642kB:System
18642kB:system(pid451)
13979kB:Persistent
9884kB:com.android.systemui(pid1791)
4095kB:com.android.phone(pid689)
18349kB:Foreground
18349kB:com.android.launcher(pid3106)
18895kB:Visible
9498kB:com.google.process.gapps(pid735)
7078kB:com.google.process.location(pid667)
2319kB:com.android.smspush(pid795)
8222kB:Perceptible
5623kB:com.android.inputmethod.latin(pid646)
2599kB:com.android.location.fused(pid676)
2810kB:AServices
2810kB:de.telekom.droidsync(pid3117)
45844kB:Background
14552kB:android.process.acore(pid3133)
5566kB:com.google.android.syncadapters.calendar(pid3270)
5475kB:com.google.android.apps.genie.geniewidget(pid3185)
4940kB:com.google.android.gsf.login(pid3254)
4362kB:com.android.browser(pid3359)
3898kB:com.android.calendar(pid3305)
3691kB:com.android.providers.calendar(pid3286)
3360kB:com.cyanogenmod.lockclock(pid3327)
dumpsys activity oom (1/3)
OOMlevels:
SYSTEM_ADJ:-16
PERSISTENT_PROC_ADJ:-12
FOREGROUND_APP_ADJ:0
VISIBLE_APP_ADJ:1
PERCEPTIBLE_APP_ADJ:2
HEAVY_WEIGHT_APP_ADJ:3
BACKUP_APP_ADJ:4
SERVICE_ADJ:5
HOME_APP_ADJ:6
PREVIOUS_APP_ADJ:7
SERVICE_B_ADJ:8
HIDDEN_APP_MIN_ADJ:10
HIDDEN_APP_MAX_ADJ:15
dumpsys activity oom (2/3)
ProcessOOMcontrol:
PERS#7:adj=sys /F trm=15451:system/1000(fixed)
oom:max=-16hidden=10client=10empty=10curRaw=-16setRaw=-16cur=-16set=-16
keeping=truehidden=falseempty=falsehasAboveClient=false
PERS#10:adj=pers/F trm=15689:com.android.phone/1001(fixed)
oom:max=-12hidden=10client=10empty=10curRaw=-12setRaw=-12cur=-12set=-12
keeping=truehidden=falseempty=falsehasAboveClient=false
PERS#3:adj=pers/F trm=151791:com.android.systemui/u0a10030(fixed)
oom:max=-12hidden=10client=10empty=10curRaw=-12setRaw=-12cur=-12set=-12
keeping=truehidden=falseempty=falsehasAboveClient=false
Proc#0:adj=fore/FAtrm=153106:com.android.launcher/u0a10022(top-activity)
oom:max=15hidden=10client=10empty=10curRaw=0setRaw=0cur=0set=0
keeping=truehidden=falseempty=falsehasAboveClient=false
Proc#9:adj=vis /F trm=15795:com.android.smspush/u0a10032(service)
com.android.smspush/.WapPushManager<=Proc{689:com.android.phone/1001}
oom:max=15hidden=10client=10empty=10curRaw=1setRaw=1cur=1set=1
keeping=truehidden=falseempty=truehasAboveClient=false
dumpsys activity oom (3/3)
ProcessesthatarewaitingtoGC:
ProcessProcessRecord{422a4260735:com.google.process.gapps/u0a10033}
lowMem=true,lastgced=3110616msago,lastlowMem=18198msago
ProcessProcessRecord{422f13b0451:system/1000}
lowMem=true,lastgced=3110616msago,lastlowMem=18198msago
ProcessProcessRecord{4247c388667:com.google.process.location/u0a10033}
lowMem=true,lastgced=3110616msago,lastlowMem=18198msago
ProcessProcessRecord{4231a630646:com.android.inputmethod.latin/u0a10021}
lowMem=true,lastgced=3110616msago,lastlowMem=18198msago
ProcessProcessRecord{4250cfe0676:com.android.location.fused/u0a10018}
lowMem=true,lastgced=3110616msago,lastlowMem=18198msago
ProcessProcessRecord{422f2dd81791:com.android.systemui/u0a10030}
lowMem=true,lastgced=3110616msago,lastlowMem=18198msago
Now for the
Kernel Bits
KSM
Kernel SamePage Merging
KSM can save about 20-30MB of RAM if given a chance
Enabling KSM
This is easy-peasy
echo1|tee/sys/kernel/mm/ksm/run
echo1000|tee/sys/kernel/mm/ksm/sleep_millisecs
echo128|tee/sys/kernel/mm/ksm/pages_to_scan
Oh yeah...
You need to mark pages as mergeable.
void*mmap(void*addr,size_tsize,intprot,intflags,intfd,off_toffset){
...
if(result!=MAP_FAILED&&(flags&(MAP_PRIVATE|MAP_ANONYMOUS))!=0){
ErrnoRestorererrno_restorer;
madvise(result,size,MADV_MERGEABLE);
}
returnresult;
}
Is it working?
dumpsys meminfo answers this
TotalPSS:126741kB
KSM:6672kBsavedfromshared1128kB
24552kBunshared;102936kBvolatile
extra_free_kbytes
Raises the low water mark used to trigger kswapd
References
Dalvik VM Internals - 2008 Google I/O
A JIT Compiler for Android's Dalvik VM - 2010 Google I/O
Running Android with low RAM
Managing Your App's Memory
Investigating your RAM Usage
Understanding the Linux Virtual Memory Manager - Zones
Reducing Memory Access Lateny
THE END

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

The Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast StorageThe Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast Storage
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device drivers
 
Linux scheduler
Linux schedulerLinux scheduler
Linux scheduler
 
Page reclaim
Page reclaimPage reclaim
Page reclaim
 
Container Performance Analysis
Container Performance AnalysisContainer Performance Analysis
Container Performance Analysis
 
Linux Memory Management with CMA (Contiguous Memory Allocator)
Linux Memory Management with CMA (Contiguous Memory Allocator)Linux Memory Management with CMA (Contiguous Memory Allocator)
Linux Memory Management with CMA (Contiguous Memory Allocator)
 
File systems for Embedded Linux
File systems for Embedded LinuxFile systems for Embedded Linux
File systems for Embedded Linux
 
서버와 클라이언트 같은 엔진 사용하기
서버와 클라이언트 같은 엔진 사용하기서버와 클라이언트 같은 엔진 사용하기
서버와 클라이언트 같은 엔진 사용하기
 
Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50
 
Introduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra SolutionsIntroduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra Solutions
 
OpenStack with SR-IOV
OpenStack with SR-IOVOpenStack with SR-IOV
OpenStack with SR-IOV
 
Netmap presentation
Netmap presentationNetmap presentation
Netmap presentation
 
Wireguard 実践入門
Wireguard 実践入門Wireguard 実践入門
Wireguard 実践入門
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
ファイルシステム比較
ファイルシステム比較ファイルシステム比較
ファイルシステム比較
 
Jvm & Garbage collection tuning for low latencies application
Jvm & Garbage collection tuning for low latencies applicationJvm & Garbage collection tuning for low latencies application
Jvm & Garbage collection tuning for low latencies application
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
 
Xvisor: embedded and lightweight hypervisor
Xvisor: embedded and lightweight hypervisorXvisor: embedded and lightweight hypervisor
Xvisor: embedded and lightweight hypervisor
 
Linux Kernel and Driver Development Training
Linux Kernel and Driver Development TrainingLinux Kernel and Driver Development Training
Linux Kernel and Driver Development Training
 
LISA2019 Linux Systems Performance
LISA2019 Linux Systems PerformanceLISA2019 Linux Systems Performance
LISA2019 Linux Systems Performance
 

Andere mochten auch

Александр Терещук - Memory Analyzer Tool and memory optimization tips in Android
Александр Терещук - Memory Analyzer Tool and memory optimization tips in AndroidАлександр Терещук - Memory Analyzer Tool and memory optimization tips in Android
Александр Терещук - Memory Analyzer Tool and memory optimization tips in Android
UA Mobile
 
Android Performance Best Practices
Android Performance Best Practices Android Performance Best Practices
Android Performance Best Practices
Amgad Muhammad
 
Process control daemon
Process control daemonProcess control daemon
Process control daemon
haish
 
flashcache原理及改造
flashcache原理及改造flashcache原理及改造
flashcache原理及改造
Hao(Robin) Dong
 
Device mapper multipathing
Device mapper multipathingDevice mapper multipathing
Device mapper multipathing
Anand Loganathan
 
Tuning Android Applications (Part One)
Tuning Android Applications (Part One)Tuning Android Applications (Part One)
Tuning Android Applications (Part One)
CommonsWare
 

Andere mochten auch (20)

Tuning Android for low RAM
Tuning Android for low RAMTuning Android for low RAM
Tuning Android for low RAM
 
Александр Терещук - Memory Analyzer Tool and memory optimization tips in Android
Александр Терещук - Memory Analyzer Tool and memory optimization tips in AndroidАлександр Терещук - Memory Analyzer Tool and memory optimization tips in Android
Александр Терещук - Memory Analyzer Tool and memory optimization tips in Android
 
Android Memory , Where is all My RAM
Android Memory , Where is all My RAM Android Memory , Where is all My RAM
Android Memory , Where is all My RAM
 
Memory in Android
Memory in AndroidMemory in Android
Memory in Android
 
Android Performance Best Practices
Android Performance Best Practices Android Performance Best Practices
Android Performance Best Practices
 
Poster_Jan
Poster_JanPoster_Jan
Poster_Jan
 
Process control daemon
Process control daemonProcess control daemon
Process control daemon
 
Android memory fundamentals
Android memory fundamentalsAndroid memory fundamentals
Android memory fundamentals
 
Linux memory consumption
Linux memory consumptionLinux memory consumption
Linux memory consumption
 
flashcache原理及改造
flashcache原理及改造flashcache原理及改造
flashcache原理及改造
 
Device mapper multipathing
Device mapper multipathingDevice mapper multipathing
Device mapper multipathing
 
Android vs iOS encryption systems
Android vs iOS encryption systemsAndroid vs iOS encryption systems
Android vs iOS encryption systems
 
LCA13: Memory Hotplug on Android
LCA13: Memory Hotplug on AndroidLCA13: Memory Hotplug on Android
LCA13: Memory Hotplug on Android
 
Memory Analysis of the Dalvik (Android) Virtual Machine
Memory Analysis of the Dalvik (Android) Virtual MachineMemory Analysis of the Dalvik (Android) Virtual Machine
Memory Analysis of the Dalvik (Android) Virtual Machine
 
Stan winston & animatronics
Stan winston & animatronicsStan winston & animatronics
Stan winston & animatronics
 
Mobile Device Encryption Systems
Mobile Device Encryption SystemsMobile Device Encryption Systems
Mobile Device Encryption Systems
 
Android Rooting and Flashing
Android Rooting and FlashingAndroid Rooting and Flashing
Android Rooting and Flashing
 
Android performance tuning. Memory.
Android performance tuning. Memory.Android performance tuning. Memory.
Android performance tuning. Memory.
 
Tuning Android Applications (Part One)
Tuning Android Applications (Part One)Tuning Android Applications (Part One)
Tuning Android Applications (Part One)
 
Deep Parameters Tuning for Android Mobile Apps
Deep Parameters Tuning for Android Mobile AppsDeep Parameters Tuning for Android Mobile Apps
Deep Parameters Tuning for Android Mobile Apps
 

Ähnlich wie Tuning android for low ram devices

Optimisation and performance in Android
Optimisation and performance in AndroidOptimisation and performance in Android
Optimisation and performance in Android
Rakesh Jha
 
Android introduction and rooting technology
Android introduction and rooting technologyAndroid introduction and rooting technology
Android introduction and rooting technology
Gagandeep Nanda
 
Information Retrieval, Applied Statistics and Mathematics onBigData - German ...
Information Retrieval, Applied Statistics and Mathematics onBigData - German ...Information Retrieval, Applied Statistics and Mathematics onBigData - German ...
Information Retrieval, Applied Statistics and Mathematics onBigData - German ...
Romeo Kienzler
 

Ähnlich wie Tuning android for low ram devices (20)

Optimisation and performance in Android
Optimisation and performance in AndroidOptimisation and performance in Android
Optimisation and performance in Android
 
Android Memory Management
Android Memory ManagementAndroid Memory Management
Android Memory Management
 
ACADGILD:: ANDROID LESSON-How to analyze &amp; manage memory on android like ...
ACADGILD:: ANDROID LESSON-How to analyze &amp; manage memory on android like ...ACADGILD:: ANDROID LESSON-How to analyze &amp; manage memory on android like ...
ACADGILD:: ANDROID LESSON-How to analyze &amp; manage memory on android like ...
 
Effective memory management
Effective memory managementEffective memory management
Effective memory management
 
Effective memory management
Effective memory managementEffective memory management
Effective memory management
 
Provision Intel® Optane™ DC Persistent Memory in Linux*
Provision Intel® Optane™ DC Persistent Memory in Linux*Provision Intel® Optane™ DC Persistent Memory in Linux*
Provision Intel® Optane™ DC Persistent Memory in Linux*
 
Thinking cpu & memory - DroidCon Paris 18 june 2013
Thinking cpu & memory - DroidCon Paris 18 june 2013Thinking cpu & memory - DroidCon Paris 18 june 2013
Thinking cpu & memory - DroidCon Paris 18 june 2013
 
X Means Y
X Means YX Means Y
X Means Y
 
ODROID Magazine August 2014
ODROID Magazine August 2014ODROID Magazine August 2014
ODROID Magazine August 2014
 
Android introduction and rooting technology
Android introduction and rooting technologyAndroid introduction and rooting technology
Android introduction and rooting technology
 
Android Development Tools Overview
Android Development Tools OverviewAndroid Development Tools Overview
Android Development Tools Overview
 
Android Mobile forensics with custom recoveries
Android Mobile forensics with custom recoveriesAndroid Mobile forensics with custom recoveries
Android Mobile forensics with custom recoveries
 
S3 l6 db2 - memory model
S3 l6   db2 - memory modelS3 l6   db2 - memory model
S3 l6 db2 - memory model
 
Workshop su Android Kernel Hacking
Workshop su Android Kernel HackingWorkshop su Android Kernel Hacking
Workshop su Android Kernel Hacking
 
The Good, the Bad and the Ugly things to do with android
The Good, the Bad and the Ugly things to do with androidThe Good, the Bad and the Ugly things to do with android
The Good, the Bad and the Ugly things to do with android
 
"Avoiding memory leaks in Android" Денис Жучинский
"Avoiding memory leaks in Android" Денис Жучинский"Avoiding memory leaks in Android" Денис Жучинский
"Avoiding memory leaks in Android" Денис Жучинский
 
Information Retrieval, Applied Statistics and Mathematics onBigData - German ...
Information Retrieval, Applied Statistics and Mathematics onBigData - German ...Information Retrieval, Applied Statistics and Mathematics onBigData - German ...
Information Retrieval, Applied Statistics and Mathematics onBigData - German ...
 
Techiques for Writing Embedded Code_Internet of Things
Techiques for Writing Embedded Code_Internet of ThingsTechiques for Writing Embedded Code_Internet of Things
Techiques for Writing Embedded Code_Internet of Things
 
Windows Mobile 6.5 메모리관리
Windows Mobile 6.5 메모리관리Windows Mobile 6.5 메모리관리
Windows Mobile 6.5 메모리관리
 
An Introduction To Android
An Introduction To AndroidAn Introduction To Android
An Introduction To Android
 

Mehr von Droidcon Berlin

Droidcon de 2014 google cast
Droidcon de 2014   google castDroidcon de 2014   google cast
Droidcon de 2014 google cast
Droidcon Berlin
 
Android programming -_pushing_the_limits
Android programming -_pushing_the_limitsAndroid programming -_pushing_the_limits
Android programming -_pushing_the_limits
Droidcon Berlin
 
Android industrial mobility
Android industrial mobility Android industrial mobility
Android industrial mobility
Droidcon Berlin
 
From sensor data_to_android_and_back
From sensor data_to_android_and_backFrom sensor data_to_android_and_back
From sensor data_to_android_and_back
Droidcon Berlin
 
new_age_graphics_android_x86
new_age_graphics_android_x86new_age_graphics_android_x86
new_age_graphics_android_x86
Droidcon Berlin
 
Testing and Building Android
Testing and Building AndroidTesting and Building Android
Testing and Building Android
Droidcon Berlin
 
Matchinguu droidcon presentation
Matchinguu droidcon presentationMatchinguu droidcon presentation
Matchinguu droidcon presentation
Droidcon Berlin
 
Cgm life sdk_droidcon_2014_v3
Cgm life sdk_droidcon_2014_v3Cgm life sdk_droidcon_2014_v3
Cgm life sdk_droidcon_2014_v3
Droidcon Berlin
 
The artofcalabash peterkrauss
The artofcalabash peterkraussThe artofcalabash peterkrauss
The artofcalabash peterkrauss
Droidcon Berlin
 
Raesch, gries droidcon 2014
Raesch, gries   droidcon 2014Raesch, gries   droidcon 2014
Raesch, gries droidcon 2014
Droidcon Berlin
 
Android open gl2_droidcon_2014
Android open gl2_droidcon_2014Android open gl2_droidcon_2014
Android open gl2_droidcon_2014
Droidcon Berlin
 
20140508 quantified self droidcon
20140508 quantified self droidcon20140508 quantified self droidcon
20140508 quantified self droidcon
Droidcon Berlin
 
Froyo to kit kat two years developing & maintaining deliradio
Froyo to kit kat   two years developing & maintaining deliradioFroyo to kit kat   two years developing & maintaining deliradio
Froyo to kit kat two years developing & maintaining deliradio
Droidcon Berlin
 
Droidcon2013 security genes_trendmicro
Droidcon2013 security genes_trendmicroDroidcon2013 security genes_trendmicro
Droidcon2013 security genes_trendmicro
Droidcon Berlin
 
Droidcon2013 commercialsuccess rannenberg
Droidcon2013 commercialsuccess rannenbergDroidcon2013 commercialsuccess rannenberg
Droidcon2013 commercialsuccess rannenberg
Droidcon Berlin
 

Mehr von Droidcon Berlin (20)

Droidcon de 2014 google cast
Droidcon de 2014   google castDroidcon de 2014   google cast
Droidcon de 2014 google cast
 
Android programming -_pushing_the_limits
Android programming -_pushing_the_limitsAndroid programming -_pushing_the_limits
Android programming -_pushing_the_limits
 
crashing in style
crashing in stylecrashing in style
crashing in style
 
Raspberry Pi
Raspberry PiRaspberry Pi
Raspberry Pi
 
Android industrial mobility
Android industrial mobility Android industrial mobility
Android industrial mobility
 
Details matter in ux
Details matter in uxDetails matter in ux
Details matter in ux
 
From sensor data_to_android_and_back
From sensor data_to_android_and_backFrom sensor data_to_android_and_back
From sensor data_to_android_and_back
 
droidparts
droidpartsdroidparts
droidparts
 
new_age_graphics_android_x86
new_age_graphics_android_x86new_age_graphics_android_x86
new_age_graphics_android_x86
 
5 tips of monetization
5 tips of monetization5 tips of monetization
5 tips of monetization
 
Testing and Building Android
Testing and Building AndroidTesting and Building Android
Testing and Building Android
 
Matchinguu droidcon presentation
Matchinguu droidcon presentationMatchinguu droidcon presentation
Matchinguu droidcon presentation
 
Cgm life sdk_droidcon_2014_v3
Cgm life sdk_droidcon_2014_v3Cgm life sdk_droidcon_2014_v3
Cgm life sdk_droidcon_2014_v3
 
The artofcalabash peterkrauss
The artofcalabash peterkraussThe artofcalabash peterkrauss
The artofcalabash peterkrauss
 
Raesch, gries droidcon 2014
Raesch, gries   droidcon 2014Raesch, gries   droidcon 2014
Raesch, gries droidcon 2014
 
Android open gl2_droidcon_2014
Android open gl2_droidcon_2014Android open gl2_droidcon_2014
Android open gl2_droidcon_2014
 
20140508 quantified self droidcon
20140508 quantified self droidcon20140508 quantified self droidcon
20140508 quantified self droidcon
 
Froyo to kit kat two years developing & maintaining deliradio
Froyo to kit kat   two years developing & maintaining deliradioFroyo to kit kat   two years developing & maintaining deliradio
Froyo to kit kat two years developing & maintaining deliradio
 
Droidcon2013 security genes_trendmicro
Droidcon2013 security genes_trendmicroDroidcon2013 security genes_trendmicro
Droidcon2013 security genes_trendmicro
 
Droidcon2013 commercialsuccess rannenberg
Droidcon2013 commercialsuccess rannenbergDroidcon2013 commercialsuccess rannenberg
Droidcon2013 commercialsuccess rannenberg
 

Tuning android for low ram devices