2015-09-04 22 views
2

默認情況下,ART重新定位boot.art & boot.oat在/system/framework/arm//data/dalvik-cache/arm/之間。爲什麼ART需要搬遷?

爲什麼藝術喜歡使用緩存的而不是系統?

爲什麼不使用/system下的啓動映像?

+2

雖然這是一個很好的問題,但它並不是關於編程。可能更適合android.stackexchange.com? – JesusFreke

回答

0

我猜,在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來計算類的新地址。