Was ist Dalvik und Dalvik-Cache?

79

Ich weiß, dass dies eine grundlegende Frage in Android sein kann. Aber was ist Dalvik und Dalvik-Cache?

Android Killer
quelle

Antworten:

134

Dalvik ist die virtuelle Maschine, die von Android verwendet wird. Es wird allgemein als eine virtuelle Java-Maschine angesehen, obwohl dies nicht genau richtig ist. Es verwendet ein Objektmodell, das mit Java identisch ist, und sein Speichermodell ist ebenfalls nahezu gleichwertig. Die Dalvik-VM ist jedoch eine registergestützte VM im Gegensatz zu Java-VMs, die stapelbasiert sind.

Dementsprechend verwendet es einen völlig anderen Bytecode als Java. Das Android SDK enthält jedoch das dx-Tool zum Übersetzen von Java-Bytecode in Dalvik-Bytecode, weshalb Sie Android-Anwendungen in Java schreiben können.

Wenn Sie " dalvik-cache " sagen , meinen Sie vermutlich das Verzeichnis / data / dalvik-cache , das auf typischen Android-Geräten zu finden ist. Wenn Sie eine Anwendung unter Android installieren, werden einige Änderungen und Optimierungen an der Dex-Datei dieser Anwendung vorgenommen (der Datei, die den gesamten Dalvik-Bytecode für die Anwendung enthält). Anschließend wird die resultierende Odex- Datei ( Optimized Dex ) im Verzeichnis / data / dalvik-cache zwischengespeichert , sodass der Optimierungsprozess nicht jedes Mal ausgeführt werden muss, wenn eine Anwendung geladen wird .

gute Referenz

JesusFreke
quelle
15
Was ist, wenn ich diesen Dalvik-Cache lösche? Wird es einen Effekt geben, außer dass das Laden der App einige Zeit in Anspruch nimmt, da der Dalvik-Cache neu erstellt werden muss?
Swanand
16
Richtig. Es gibt keine anderen Auswirkungen als die Verlängerung der nächsten Ladezeit, wenn diese wiederhergestellt wird.
JesusFreke
Als jemand, der eine andere doppelte Frage gestellt hat, ist hier Ihr kostenloser Wiki-Link "Der Dalvik-Cache ist ein wesentlicher Bestandteil Ihres Android. Sie können hier mehr darüber lesen: en.wikipedia.org/wiki/Dalvik_%28software%29 "
qneill
1
Warum hat Android Lollipop (Version 5) jetzt, wo die VM ART ist, immer noch Dalvik-Cache? Einige Leute sagten mir, es sei aus Kompatibilitätsgründen, aber ich habe festgestellt, dass es viel Platz beansprucht (ca. 900 MB).
Android-Entwickler
3
Art kompiliert die Dex-Datei in nativen Code. Dieser kompilierte Code wird jetzt mit Kunst im Dalvik-Cache gespeichert.
JesusFreke
3

Dalvik ist die Java-basierte virtuelle Maschine, auf der Android Apps auf Android ausgeführt werden. Dalvik-Cache ist der Cache-Bereich für Dalvik VM. Er wird erstellt, wenn die Dalvik VM Ihre App für die Ausführung optimiert.

Sie können im Internet mehr über die Unterschiede zwischen Dalvik VM-Op-Codes und "normalen" Java VM-Op-Codes nachschlagen, wenn Sie möchten.

omermuhammed
quelle
0

Dalvik-Caches sind nichts anderes als die temporäre Kompilierung von Anwendungscode, der als ausführbare Dateien gespeichert wird. Da diese dynamisch aus dem ursprünglichen Anwendungscode außerhalb des Dalvik-Cache kompiliert werden können, können Sie den Dalvik-Cache ohne echte Strafe löschen.

user5065310
quelle
@AndroidKiller, das wären Bytecode oder Binärbilder, abhängig von der Anwesenheit von Dalvik oder ART. Keine grafischen Bilder.
Neil Steiner
0

Der Dalvik-Cache ist nicht mehr Teil moderner Android-Versionen. Android 4.4 KitKat war das letzte, das diese Konstruktion nutzte. Weitere Informationen finden Sie unter https://en.wikipedia.org/wiki/Dalvik_(software) .

Nosegear
quelle