在MonoTouch 6.0.8版本发布说明中,“Runtime Trampolines”是什么意思?

7

MonoTouch 6.0.8 发布说明表明:

运行时跳板函数:不再需要手动管理 Mono 运行时中的跳板函数,现在跳板函数是动态处理的。

这是什么意思?你又如何手动管理跳板函数呢?
当你知道可能会用完跳板函数时,还需要添加编译器标志吗?

1个回答

6

这意味着正如发布记录所说的那样,Monotouch现在会计算需要分配多少个跳板。

如果要添加更多跳板,则需要添加编译器标志,例如:

-aot "nrgctx-trampolines=4096" -aot "nimt-trampolines=4096" -aot "ntrampolines=4096"

通常情况下,当你使用大量泛型和接口时,你就会用尽跳板(trampolines),因为很难提前计算需要分配多少内存(AOT)。因此,Xamarin 必须找到了一种神奇的方式来进行计算并相应地分配跳板。我没有找到更多相关信息。
这个帖子中有关于跳板的一些通用信息:http://forums.xamarin.com/discussion/503/trampolines-cost,以及这个帖子是在另一个帖子之前发布的:http://lists.ximian.com/pipermail/monotouch/2012-March/008800.html

从我所阅读的内容来看,我对静态确定预先跳板的数量感到过于困难的印象。我非常希望能听到Xamarin团队有关这方面自那时以来发生了什么变化的详细信息! - Dan Abramov
1
一个小澄清:我们不会计算需要多少个蹦床并预先分配它们,因为这将是一个非常大的数字(假设能够正确枚举),并且这将显着增加二进制文件的大小。相反,我们使用一种内存管理技巧,在运行时按需分配所需数量的蹦床。二进制文件大小开销现在已经固定(通常为8-12KB),无论应用程序需要多少个蹦床。大多数情况下,运行时内存使用也更低。 - lupus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接