Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.
Trang này được dịch bởi Cloud Translation API.
Switch to English

Android Runtime (ART) và Dalvik

Thời gian chạy Android (ART) là thời gian chạy được quản lý được sử dụng bởi các ứng dụng và một số dịch vụ hệ thống trên Android. ART và người tiền nhiệm Dalvik ban đầu được tạo ra đặc biệt cho dự án Android. ART khi thời gian chạy thực thi định dạng Dalvik Executable và đặc tả bytecode Dex.

ART và Dalvik là các thời gian chạy tương thích với Dex bytecode, vì vậy các ứng dụng được phát triển cho Dalvik sẽ hoạt động khi chạy với ART. Tuy nhiên, một số kỹ thuật hoạt động trên Dalvik không hoạt động trên ART. Để biết thông tin về các vấn đề quan trọng nhất, hãy xem Xác minh hành vi của ứng dụng trong thời gian chạy Android (ART) .

Tính năng ART

Dưới đây là một số tính năng chính do ART thực hiện.

Biên dịch trước thời gian (AOT)

ART giới thiệu tính năng biên dịch trước (AOT), có thể cải thiện hiệu suất ứng dụng. ART cũng có xác minh thời gian cài đặt chặt chẽ hơn Dalvik.

Tại thời điểm cài đặt, ART biên dịch ứng dụng bằng công cụ dex2oat trên thiết bị. Tiện ích này chấp nhận các tệp DEX làm đầu vào và tạo một ứng dụng đã biên dịch có thể thực thi cho thiết bị đích. Tiện ích sẽ có thể biên dịch tất cả các tệp DEX hợp lệ mà không gặp khó khăn. Tuy nhiên, một số công cụ xử lý hậu kỳ tạo ra các tệp không hợp lệ có thể được Dalvik dung thứ nhưng ART không thể biên dịch được. Để biết thêm thông tin, hãy xem Giải quyết vấn đề thu gom rác .

Cải thiện thu gom rác

Tính năng thu gom rác (GC) rất tốn tài nguyên, có thể làm giảm hiệu suất của ứng dụng, dẫn đến hiển thị bị giật, khả năng phản hồi giao diện người dùng kém và các vấn đề khác. ART cải thiện việc thu gom rác theo một số cách:

  • Chủ yếu là thiết kế đồng thời với một khoảng dừng GC duy nhất
  • Sao chép đồng thời để giảm sử dụng bộ nhớ nền và phân mảnh
  • Khoảng thời gian tạm dừng GC không phụ thuộc vào kích thước đống
  • Bộ sưu tập với tổng thời gian GC thấp hơn cho trường hợp đặc biệt là dọn dẹp các vật thể tồn tại trong thời gian ngắn, được phân bổ gần đây
  • Cải tiến công thái học thu gom rác, giúp việc thu gom rác đồng thời trở nên kịp thời hơn, điều này làm cho các sự kiện GC_FOR_ALLOC trở nên cực kỳ hiếm trong các trường hợp sử dụng điển hình

Cải tiến phát triển và gỡ lỗi

ART cung cấp một số tính năng để cải thiện việc phát triển ứng dụng và gỡ lỗi.

Hỗ trợ cho hồ sơ lấy mẫu

Trước đây, các nhà phát triển đã sử dụng công cụ Traceview (được thiết kế để theo dõi việc thực thi ứng dụng) như một trình biên dịch. Mặc dù Traceview cung cấp thông tin hữu ích, nhưng kết quả của nó trên Dalvik đã bị sai lệch bởi chi phí cuộc gọi cho mỗi phương thức và việc sử dụng công cụ này ảnh hưởng đáng kể đến hiệu suất thời gian chạy.

ART bổ sung hỗ trợ cho một trình biên dịch lấy mẫu chuyên dụng không có những hạn chế này. Điều này mang lại cái nhìn chính xác hơn về việc thực thi ứng dụng mà không bị chậm lại đáng kể. Hỗ trợ lấy mẫu đã được thêm vào Traceview cho Dalvik trong bản phát hành KitKat.

Hỗ trợ nhiều tính năng gỡ lỗi hơn

ART hỗ trợ một số tùy chọn gỡ lỗi mới, đặc biệt trong chức năng liên quan đến giám sát và thu gom rác. Ví dụ, bạn có thể:

  • Xem ổ khóa nào được giữ trong dấu vết ngăn xếp, sau đó chuyển đến luồng giữ ổ khóa.
  • Hỏi có bao nhiêu phiên bản trực tiếp của một lớp nhất định, yêu cầu xem các phiên bản và xem những tham chiếu nào đang giữ cho một đối tượng hoạt động.
  • Lọc các sự kiện (như breakpoint) cho một trường hợp cụ thể.
  • Xem giá trị được trả về bởi một phương thức khi nó thoát (sử dụng các sự kiện “method-exit”).
  • Đặt điểm giám sát trường để tạm dừng việc thực thi chương trình khi một trường cụ thể được truy cập và / hoặc sửa đổi.

Cải thiện chi tiết chẩn đoán trong các trường hợp ngoại lệ và báo cáo sự cố

ART cung cấp cho bạn nhiều ngữ cảnh và chi tiết nhất có thể khi các ngoại lệ thời gian chạy xảy ra. ART cung cấp chi tiết ngoại lệ mở rộng cho java.lang.ClassCastException , java.lang.ClassNotFoundExceptionjava.lang.NullPointerException . (Các phiên bản sau của Dalvik đã cung cấp chi tiết ngoại lệ mở rộng cho java.lang.ArrayIndexOutOfBoundsExceptionjava.lang.ArrayStoreException , hiện bao gồm kích thước của mảng và bù đắp ngoài giới hạn và ART cũng thực hiện điều này.)

Ví dụ: java.lang.NullPointerException hiện hiển thị thông tin về những gì ứng dụng đang cố gắng thực hiện với con trỏ null, chẳng hạn như trường mà ứng dụng đang cố gắng ghi vào hoặc phương thức mà ứng dụng đang cố gắng gọi. Dưới đây là một số ví dụ điển hình:

java.lang.NullPointerException: Attempt to write to field 'int
android.accessibilityservice.AccessibilityServiceInfo.flags' on a null object
reference
java.lang.NullPointerException: Attempt to invoke virtual method
'java.lang.String java.lang.Object.toString()' on a null object reference

ART cũng cung cấp thông tin ngữ cảnh được cải thiện trong báo cáo sự cố gốc của ứng dụng, bằng cách bao gồm cả thông tin ngăn xếp gốc và Java.

Báo cáo sự cố

Nếu bạn gặp bất kỳ sự cố nào không phải do sự cố JNI của ứng dụng, vui lòng báo cáo chúng thông qua Trình theo dõi sự cố dự án nguồn mở Android . Bao gồm adb bugreport và liên kết đến ứng dụng trong cửa hàng Google Play nếu có. Mặt khác, nếu có thể, hãy đính kèm APK tái tạo sự cố.