2
默認情況下,ART重新定位boot.art & boot.oat在/system/framework/arm/
到/data/dalvik-cache/arm/
之間。爲什麼ART需要搬遷?
爲什麼藝術喜歡使用緩存的而不是系統?
爲什麼不使用/system
下的啓動映像?
默認情況下,ART重新定位boot.art & boot.oat在/system/framework/arm/
到/data/dalvik-cache/arm/
之間。爲什麼ART需要搬遷?
爲什麼藝術喜歡使用緩存的而不是系統?
爲什麼不使用/system
下的啓動映像?
我猜,在Android L & M中,boot.art和boot.oat使用絕對地址加載boot.art & boot.oat。但是,有時ART不能將它們加載到特定的基地址,因此,ART會通過另一個基地址加載它們。因此,ART必須重新定位boot.art中的類地址。
見的代碼:./runtime/gc/space/image_space.cc RelocateImage
std::string base_offset_arg("--base-offset-delta=");
StringAppendF(&base_offset_arg, "%d", hooseRelocationOffsetDelta(ART_BASE_ADDRESS_MIN_DELTA, ART_BASE_ADDRESS_MAX_DELTA));
基偏移增量被用於boot.art來計算類的新地址。
雖然這是一個很好的問題,但它並不是關於編程。可能更適合android.stackexchange.com? – JesusFreke