Dalvik và dalvik-cache là gì?


Câu trả lời:


136

Dalvik là máy ảo được sử dụng bởi Android. Nó thường được coi là một máy ảo Java, mặc dù điều này không chính xác. Nó sử dụng một mô hình đối tượng giống hệt với Java và mô hình bộ nhớ của nó cũng gần tương đương. Nhưng máy ảo dalvik là máy ảo dựa trên thanh ghi, trái ngược với máy ảo Java, dựa trên ngăn xếp.

Theo đó, nó sử dụng một mã bytecode hoàn toàn khác với Java. Tuy nhiên, Android SDK bao gồm công cụ dx để dịch Java bytecode sang dalvik bytecode, đó là lý do tại sao bạn có thể viết các ứng dụng Android bằng Java.

Khi bạn nói " dalvik-cache ", tôi cho rằng bạn muốn nói đến thư mục / data / dalvik-cache có thể được tìm thấy trên các thiết bị Android thông thường. Khi bạn cài đặt một ứng dụng trên Android, nó sẽ thực hiện một số sửa đổi và tối ưu hóa trên tệp dex của ứng dụng đó (tệp chứa tất cả mã bytecode dalvik cho ứng dụng). Sau đó, nó lưu vào bộ nhớ cache tệp odex ( dex được tối ưu hóa ) kết quả trong thư mục / data / dalvik-cache , để nó không phải thực hiện quá trình tối ưu hóa mỗi khi tải ứng dụng.

tham khảo tốt


15
Điều gì sẽ xảy ra nếu tôi xóa những Dalvik Cache này? Liệu có bất kỳ ảnh hưởng nào ngoại trừ việc ứng dụng sẽ mất thời gian để tải vì nó cần phải xây dựng lại Dalvik Cache?
Swanand

16
Chính xác. Không có tác dụng nào, ngoài việc tăng thời gian tải tiếp theo, vì nó được xây dựng lại.
JesusFreke

Vì ai đó đã đăng trên một câu hỏi trùng lặp khác, đây là liên kết wiki vô cớ của bạn "Bộ nhớ cache Dalvik là một phần thiết yếu của Android của bạn. Bạn có thể đọc thêm về nó tại đây: en.wikipedia.org/wiki/Dalvik_%28software%29 "
qneill

1
Tại sao Android Lollipop (phiên bản 5) vẫn có bộ nhớ cache Dalvik bây giờ mà VM là ART? Một số người nói với tôi rằng nó để tương thích, nhưng tôi nhận thấy nó chiếm rất nhiều dung lượng (khoảng 900MB).
nhà phát triển android

3
Art biên dịch tệp dex thành mã gốc. Mã đã biên dịch đó là những gì hiện được lưu trữ trong dalvik-cache, một cách nghệ thuật.
JesusFreke

3

Dalvik là Máy ảo dựa trên java chạy Ứng dụng Android trên Android. Dalvik-cache là vùng bộ nhớ cache cho Dalvik VM, nó được tạo khi Dalvik VM tối ưu hóa ứng dụng của bạn để chạy.

Bạn có thể tra cứu thêm trên internet về sự khác biệt giữa mã op Dalvik VM và mã op Java VM "bình thường" nếu bạn muốn.


0

Dalvik Caches không là gì ngoài việc biên dịch tạm thời mã ứng dụng được lưu trữ dưới dạng tệp thực thi. Vì chúng có thể được biên dịch động từ mã ứng dụng ban đầu bên ngoài Dalvik Cache, bạn có thể xóa Dalvik Cache mà không bị phạt thực sự.


@AndroidKiller sẽ là bytecode hoặc hình ảnh nhị phân, tùy thuộc vào sự hiện diện của Dalvik hoặc ART. Không phải hình ảnh đồ họa.
Neil Steiner

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.