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?

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


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.


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.


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.