目前,Android的Dalvik虚拟机已经可以动态地加载.dex
类文件。这可能也可以用于运行时动态代码生成。
在即将到来的ART运行时中,这仍然可行吗?
目前,Android的Dalvik虚拟机已经可以动态地加载.dex
类文件。这可能也可以用于运行时动态代码生成。
在即将到来的ART运行时中,这仍然可行吗?
看起来它的工作方式与Dalvik相同。
感谢matiash提到2014年I/O大会的演讲!我已经观看了视频录像,以下是开发人员在运行时代码加载方面的论述(摘自转录稿):
[听众的问题:] 我想知道ART如何与编译后或甚至在运行时可能发生的字节码注入进行协调。
[...]
[Ian Rogers的回答:] 因此,Dalvik采用的模型和ART继续采用的模型是,对于类加载器,我们必须将类加载器支持的所有内容都备份到文件中。因此,Dalvik从未支持过执行内存注入指令等操作。
如果您在磁盘上有一个文件,那么这是我们可以提前进行编译并将其放入缓存中,以便我们不必一直重新生成它。因此,基本上它的工作方式与Dalvik相同。