【问题标题】:What do "Runtime Trampolines" mean in MonoTouch 6.0.8 Release Notes?MonoTouch 6.0.8 发行说明中的​​“运行时蹦床”是什么意思?
【发布时间】:2025-11-27 04:05:01
【问题描述】:

MonoTouch 6.0.8 release notes说:

运行时蹦床:不再需要在 Mono 运行时手动管理蹦床,现在可以动态处理蹦床。

这是什么意思?无论如何,您如何手动管理蹦床?
当您知道自己可能会用完蹦床时,是否还需要添加编译器标志?

【问题讨论】:

    标签: c# xamarin.ios xamarin trampolines


    【解决方案1】:

    这意味着正如发行说明所说,Monotouch 现在计算出要分配多少蹦床。

    要添加更多蹦床,请添加编译器标志,例如:

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

    通常,当您用完蹦床时,意味着您使用了大量的泛型和接口,很难计算需要提前分配多少内存 (aot)。所以 Xamarin 一定找到了一种神奇的方法来进行这种计算并相应地分配蹦床。我找不到有关此的更多信息。

    关于蹦床的更多信息一般在这个帖子中:http://forums.xamarin.com/discussion/503/trampolines-cost 和这个帖子之前的帖子:http://lists.ximian.com/pipermail/monotouch/2012-March/008800.html

    【讨论】:

    • 从我的阅读中,我有一个印象,预先静态确定蹦床的数量太难了。我很高兴能从 Xamarin 团队那里听到一些关于自那以后发生的变化的细节!
    • 一个小说明:我们不计算需要多少蹦床并预先分配它们,这将是一个非常大的数字(假设可以正确枚举它们),因此它会增加二进制大小相当多。相反,我们使用内存管理技巧,允许我们在运行时按需分配尽可能多的蹦床。无论应用程序需要多少蹦床,二进制大小的开销现在都是固定的(通常为 8-12KB)。在大多数情况下,运行时内存使用量也较低。