Android 9.0 ART 컴파일 분석(一) - 컴파일 경로 정리
최근에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가 터치되기 전에 조건판단을 해서 필요여부를 결정합니다.
이른바 기한이 지난 것은 바로 다음 두 가지를 겨냥한 말이다.
컴파일 통로에서 볼 수 있듯이 dex2oat 컴파일을 촉발하는 방식은 주로 두 가지가 있다.
이 두 가지 경로는 각각 뒷글에서 분석한다. 안드로이드 9.0 ART 컴파일링 분석(二)-installd 트리거dex2oat 컴파일링 프로세스 안드로이드 9.0 ART 컴파일링 분석(三)-가상 머신 트리거dex2oat 컴파일링 프로세스
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.