Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Android VM
Search
wagyu298
March 03, 2016
Programming
0
710
Android VM
Delvik / ART
wagyu298
March 03, 2016
Tweet
Share
More Decks by wagyu298
See All by wagyu298
Swagger Codegen
wagyu298
1
2.7k
HTTP/2 Mobile
wagyu298
0
980
Option Type
wagyu298
0
1.3k
process.nextTick differences between node-v0.8 and node-v0.11
wagyu298
1
1.8k
Other Decks in Programming
See All in Programming
MUSUBIXとは
nahisaho
0
130
Honoを使ったリモートMCPサーバでAIツールとの連携を加速させる!
tosuri13
1
170
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
970
Grafana:建立系統全知視角的捷徑
blueswen
0
330
SourceGeneratorのススメ
htkym
0
190
Oxlint JS plugins
kazupon
1
810
Patterns of Patterns
denyspoltorak
0
1.4k
CSC307 Lecture 08
javiergs
PRO
0
670
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
220
そのAIレビュー、レビューしてますか? / Are you reviewing those AI reviews?
rkaga
6
4.5k
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
150
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
130
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
0
4k
Exploring anti-patterns in Rails
aemeredith
2
250
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
88
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
200
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
A better future with KSS
kneath
240
18k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
220
The Mindset for Success: Future Career Progression
greggifford
PRO
0
230
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
240
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.6k
Building Applications with DynamoDB
mza
96
6.9k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
0
310
Transcript
Android VM @wagyu298
Android VM ≠ Java VM
Android VM Delvik: Android 4.4 ART: Android 5.0 or later
Hardware • Nexus 5X (Android) • Qualcomm® Snapdragon™ 808 ϓϩηοα
1.8 GHz ϔΩαίΞ 64 Ϗοτ • 2GB LPDDR3 • ࠷৽ARM8ɺݹ͍σόΠεARMҎ֎ʹMIPSx86 CPUͷͷ͋Δ • ϚϧνCPUରԠʹVM༗ར • iPhone 6s • A9 • 2GB LPDDR4 • ಉ͘͡ARM8ɺݹ͍iPhoneͯ͢ARMޓ • ୯ҰΞʔΩςΫνϟͳͷͰɺXcode͔Β࣮ߦՄೳόΠφϦΛग़ྗ͢Δ • 64bitରԠͷͨΊɺ32bitόΠφϦΛ64bitόΠφϦΛ࡞͢ΔΑ͏ʹͳͬͨ
Android VM • Delvik: Android 4.4 • ART: Android 5.0
or later • https://source.android.com/devices/tech/dalvik/ index.html
Android VM https://ja.wikipedia.org/wiki/Android_Runtime
Delvik • ϨδελϕʔεͷόʔνϟϧϚγϯʢJava VMελοΫϕʔεʣ • ARM831ݸͷ64bit൚༻Ϩδελͱ32ݸͷ128bitුಈখϨδε λ͕༻ՄೳͰARM7ͱൺDelvikʹ༗ར • ϝϞϦڥʹ࠷దԽ •
ಈ࡞͢ΔόΠτίʔυDexϑΥʔϚοτͰJavaόΠτίʔυͰͳ͍ ͨΊɺDelvik VMJava VMͰͳ͍ • JavaޓੑςετΛ௨ա͍ͯ͠ͳ͍ͷͰɺJava™Λ༻Ͱ͖ͳ͍ • dxίϚϯυͰ.classϑΝΠϧΛ.dexϑΝΠϧʹม͢Δ • APKʹෳʢ௨ৗ1ͭʣͷ.dexϑΝΠϧؚ͕·ΕΔ • Android 2.1͔ΒJITαϙʔτ
Dex Specs • https://source.android.com/devices/tech/dalvik/dex- format.html
ART • AOT (Ahead-Of-Time) ίϯύΠϧ • ࣮ߦલʢΠϯετʔϧ࣌ʣʹ.dexϑΝΠϧΛELF dynamic objectʹม •
࣮ߦ্͕͍ͯ͠Δ͕ɺAOTͷੑ্࣭ΞϓϦͷΠϯε τʔϧʹ͕͔͔࣌ؒΔΑ͏ʹͳΓ࣮ߦϑΝΠϧαΠζେ ͖͘ͳ͍ͬͯΔ • dex2oatʢdexΛELFʹม͢ΔίϚϯυʣLLVMͰ࣮ • JITίϯύΠϥଐ͍ͯ͠Δ͕ɺDelvikͷ࣮ͱҧ͍͋·Γ ࠷దԽ͞Ε͍ͯͳ͍
Zygote • AndroidΞϓϦͷىಈϓϩηε • AndroidࣗମLinuxϚγϯͰ͋ΓɺσόΠεىಈ࣌/ init͔Β࢝·ΔҰ࿈ͷىಈϓϩηε͕ී௨ʹ࣮ߦ͞Εɺ/ init.rcεΫϦϓτ͔Βىಈ͞ΕΔίϚϯυapp_process ͷ͜ͱ • https://android.googlesource.com/platform/system/
core/+/master/rootdir/init.zygote64_32.rc
Zygote • zygoteϓϩηεΞϓϦىಈʹඞཁͳͯ͢ͷϥΠϒ ϥϦ͕dynamic link͞Ε͓ͯΓɺࢠϓϩηεΛforkͯ͠ ʢexecͤͣʹʣΞϓϦΛىಈ͢Δ • app_processzygoteϞʔυͰىಈ͞ΕΔͱ com.android.internal.os.ZygoteInitΛ࣮ߦ͢Δ •
https://android.googlesource.com/platform/ frameworks/base/+/master/cmds/app_process/ app_main.cpp
Zygote • ZygoteInit͋ʔͩ͜ʔͩͨ͋͠ͱ • https://android.googlesource.com/platform/frameworks/ base/+/master/core/java/com/android/internal/os/ ZygoteInit.java • app_processͷAppRuntimeΫϥεΛܦ༝͠AndroidRuntime͔ ΒActivityThreadΫϥεͷmainؔΛݺͼग़͢ɻ
• https://android.googlesource.com/platform/frameworks/ base/+/master/core/jni/AndroidRuntime.cpp • https://android.googlesource.com/platform/frameworks/ base/+/master/core/java/android/app/ActivityThread.java
References • http://d.hatena.ne.jp/embedded/20131104/p1 • http://blog.kmckk.com/archives/3551546.html • http://blog.kmckk.com/archives/4164432.html • http://elinux.org/Android_Zygote_Startup •
http://crimsonwoods.hatenablog.com/entry/ 2014/11/10/013025 • http://blog.hermit4.info/2011/01/zygote.html • http://dsas.blog.klab.org/archives/52003951.html