Android 9.0 ART 컴파일 분석(一) - 컴파일 경로 정리

2530 단어
오리지널 내용, 전재는 출처를 밝혀 주십시오. 협조해 주셔서 감사합니다.
최근에dex2oat 관련 최적화를 했고 관련 절차와 지식을 간단하게 정리했다.
여기 가상 기기 관련 기초 지식은 군더더기 없이 이전 문장을 옮길 수 있다. 열 복구 & 플러그인화(二)- 가상 기기 시작 소모 시간 분석(三)- ART 컴파일 분석
ART 가상기는 AOT 사전 컴파일을 도입했고 최종 컴파일 작업은 dex2oat에 의해 처리되었다는 것을 우리는 모두 알고 있다.dex2oat는 시스템/bin 디렉터리에 저장된 안드로이드 시스템의 2진 실행 파일입니다.
전통적인 JIT 컴파일링에 비해dex2oat에서 컴파일한 이진 파일은 지속적이다. 현재 컴파일링은 시간이 더 길고 저장 공간이 더 많이 차지하지만 다음에 직접 영구화된 기계 코드를 실행하여 운행 효율을 대폭 높인다.
또한 주의해야 할 것은 dex2oat가 컴파일 작업을 수행할 때 j 매개 변수 뒤에 따르는 스레드 수를 따라 실행한다(흔한 -j6). dex2oat 작업을 대량으로 수행하는 장면에서 CPU의 점유율이 매우 높고 큰 확률로 큰 핵과 큰 핵을 차지하여 사용자 프론트 데스크톱 작업에 영향을 주고 심지어 카드와 블랙스크린까지 나타난다.여기에 최적화 전략을 나는 틀림없이 쓰지 않을 것이다. 하하, 그러나 관련 절차와 지식을 총괄할 수 있다.
top -t -m 10

PID TID PR CPU% S VSS RSS PCY UID Thread Proc
23836 23840 4 11% R 1297936K 59156K bg u0_a14 Compiler driver /system/bin/dex2oat
23836 23841 7 11% R 1297936K 59156K bg u0_a14 Compiler driver /system/bin/dex2oat
23836 23843 5 11% R 1297936K 59156K bg u0_a14 Compiler driver /system/bin/dex2oat
23836 23844 6 11% R 1297936K 59156K bg u0_a14 Compiler driver /system/bin/dex2oat
23836 23836 3 11% R 1297936K 59156K bg u0_a14 main /system/bin/dex2oat
23836 23845 7 11% R 1297940K 59156K bg u0_a14 Compiler driver /system/bin/dex2oat
23836 23842 3 11% R 1297936K 59156K bg u0_a14 Compiler driver /system/bin/dex2oat
23836 23839 7 11% R 1297936K 59156K bg u0_a14 Compiler driver /system/bin/dex2oat

이 글은 먼저 현재 dex2oat 조작을 촉발하는 통로를 간단하게 정리한다.
1. 트리거 경로
이 슬라이드는 기본 방식입니다.
경로
묘사
컴파일 방식
내용을 편역하다.
Install
설치가 설치를 통해 터치되는 컴파일 적용
speed-profile
주 apk
OTA 업그레이드
시스템 업그레이드 설치를 통해 터치된 컴파일
verify
주 apk
load dexFile
동적 로드 플러그인은 가상 기기를 통해 직접 터치하는 컴파일링
quicken
플러그 인
postboot
전원 켜기 1분 후, 모든 설치 7일 동안 사용되지 않고 기한이 지난 응용 프로그램이 설치를 통해 터치되는 컴파일
verify
주 apk
idle
충전, idle 상태를 동시에 만족시키고 24시간 내에 한 번만 터치합니다. 메인 apk는 설치d를 통해 터치하고 플러그인은 가상 기기를 통해 터치합니다.
speed-profile
주 apk 및 플러그인
2. 촉발 조건
dex2oat가 터치되기 전에 조건판단을 해서 필요여부를 결정합니다.
  • dex 파일은 전혀 컴파일된 적이 없습니다.
  • odex가 생성되었지만 우선순위가 높은compile Filter가 실행되었기 때문에 덮어쓰기를 다시 컴파일해야 합니다.
  • OTA 시스템이 업그레이드되면서 boot image가 변경되었습니다.

  • 이른바 기한이 지난 것은 바로 다음 두 가지를 겨냥한 말이다.
    컴파일 통로에서 볼 수 있듯이 dex2oat 컴파일을 촉발하는 방식은 주로 두 가지가 있다.
  • PMS를 통과하면 installd에서 트리거합니다.
  • 동적 로드 플러그인은 가상 시스템에서 직접 트리거합니다.

  • 이 두 가지 경로는 각각 뒷글에서 분석한다. 안드로이드 9.0 ART 컴파일링 분석(二)-installd 트리거dex2oat 컴파일링 프로세스 안드로이드 9.0 ART 컴파일링 분석(三)-가상 머신 트리거dex2oat 컴파일링 프로세스

    좋은 웹페이지 즐겨찾기