为什么ART需要重新定位?

时间:2015-09-04 02:52:04

标签: android dalvik

ART重新定位boot.art&默认情况下,在/system/framework/arm//data/dalvik-cache/arm/下的boot.oat。

为什么艺术品喜欢使用缓存的而不是系统?

为什么不在/system下使用启动图像?

1 个答案:

答案 0 :(得分: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));

base-offset-delta用于计算boot.art中类的新地址。