Quá trình hợp tử vẫn đang làm trong Android L là gì?


12

Tôi đang cố gắng tìm ra sự khác biệt cụ thể trong thời gian chạy của Dalvik và ART. Tôi nhận ra rằng ART không còn sử dụng máy ảo Dalvik, tuy nhiên, một trong những điều đầu tiên tôi nhận thấy sau khi cài đặt bản xem trước Android L là quá trình hợp tử vẫn đang chạy. Nếu họ thực sự thoát khỏi máy ảo Dalvik, điều đó sẽ khiến quá trình hợp tử trở nên vô dụng? Hơn nữa, khi kiểm tra mã nguồn được phát hành thông qua AOSP, một phần lớn Dalvik vẫn còn.


1
Khó biết, đó là một bản phát hành dành cho nhà phát triển và FAR hoàn tất. Hiện tại có rất nhiều Kitkat / Jellybean được khâu vào nó chỉ để làm cho nó hoạt động và khởi động.
RossC

Vẫn là một " bản xem trước dành cho nhà phát triển ", nó thực sự có thể không có ý nghĩa nhiều để suy đoán (mặc dù tôi làm theo lời giải thích của Dan). Nó có thể như Dan mô tả, hoặc nó có thể là "còn sót lại" chưa "hoàn toàn lỗi thời". Khi nó vẫn chạy trên L-Release, đó là một điều khác biệt.
Izzy

Câu trả lời:


13

Zygote không thực sự bị ràng buộc với Dalvik, đó chỉ là một quá trình khởi đầu. Zygote là phương pháp Android sử dụng để khởi động ứng dụng. Thay vì phải bắt đầu mỗi quy trình mới từ đầu, tải toàn bộ hệ thống và khung Android mỗi lần bạn muốn khởi động một ứng dụng, nó sẽ thực hiện quy trình đó một lần, rồi dừng lại tại thời điểm đó, trước khi Zygote đã làm bất cứ điều gì cụ thể cho ứng dụng . Sau đó, khi bạn muốn khởi động một ứng dụng, quy trình Zygote sẽ tiến hành và tiến trình con tiếp tục ở nơi nó dừng lại, tải chính ứng dụng đó vào VM.

Mặc dù phương pháp này ban đầu được thiết kế cho Dalvik, nhưng không có lý do gì ART không nên hành xử giống hệt như vậy. Nó không phải biên dịch ứng dụng JIT khi chúng đang chạy, nhưng nó vẫn có rất nhiều công cụ Java độc lập với ứng dụng để tải (tức là toàn bộ khung Android), do đó, nên sử dụng cùng một ngã ba khi phương thức được tải để bắt đầu các quy trình mới.

Thật là tự nhiên đối với một dự án lớn đến mức sẽ có một phần còn lại khác từ Dalvik vẫn còn hữu ích trong thế giới hậu Dalvik, vì vậy bạn không nên ngạc nhiên rằng có một mã khác ban đầu được viết là một phần của hoặc làm việc với Dalvik, vẫn còn xung quanh để sử dụng ART.


Phù hợp với sự hiểu biết của tôi về Zygote (là một người không phải là dev). Từ "chế độ xem người dùng", có thể dễ dàng nghĩ Zygote là "máy chủ ứng dụng", hoạt động như một "lớp trừu tượng" giữa các ứng dụng và HĐH (bằng cách nào đó giống như HAL đối với phần cứng trừu tượng): không thành vấn đề "bên dưới" (Dalvik hoặc ART), giao diện liên quan đến "công cụ" là gì?
Izzy

1
Nó có thể giúp dễ dàng hơn khi nghĩ về Zygote như một máy chủ ứng dụng, nhưng nó không phải là một mô tả chính xác. Đây chỉ là một phần của HĐH khởi động ứng dụng và rất nhiều về phía HĐH của ranh giới ứng dụng - HĐH.
Dan Hulme

Cảm ơn, vì vậy ít nhất "hiểu biết cơ bản" của tôi là chính xác (Tôi biết "máy chủ ứng dụng" không chính xác, nhưng dễ hiểu hơn bởi "người dùng bình thường" - vì vậy hãy biến nó thành " dịch vụ ứng dụng ", để đưa nó vào hơn nữa phía hệ điều hành;)
Izzy

Những gì tồn tại trong mã nguồn không phải là "dư thừa" và chúng ta không ở thời kỳ hậu Dalvik! Mã bit Dalvik vẫn là IR được sử dụng. Ngay cả với cài đặt cao nhất, không phải mọi thứ đều được biên dịch AOT và vẫn có một số nội dung cần được giải thích. Vì vậy, đối với những điều này, có DalvikVM . Ngoài ra, các thiết bị có dung lượng lưu trữ thấp, sẽ sử dụng ít giải thích AOT hơn. Cuối cùng, hợp tử tạo ra hàng đống các lớp được sử dụng thường xuyên, có thể tiết kiệm không gian vì chúng có thể được chia sẻ giữa nhiều ứng dụng.
Paschalis

@Paschalis bạn đang nhầm lẫn biên dịch JIT với DalvikVM. Chỉ vì các phiên bản mới hơn của ART thực hiện biên dịch JIT (chỉ trong thời gian), không có nghĩa là Dalvik vẫn còn tồn tại. Oracle Java cũng biên dịch JIT, không có nghĩa là nó sử dụng Dalvik
Martin Konecny
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.