如何分析 Monotouch 以查看运行时创建的蹦床数量(按类型)?

Posted

技术标签:

【中文标题】如何分析 Monotouch 以查看运行时创建的蹦床数量(按类型)?【英文标题】:How to profile Monotouch to see count of trampolines (by type) being created at runtime? 【发布时间】:2011-11-11 09:33:29 【问题描述】:

关于0型、1型和2型蹦床以及运行时错误的帖子不少

“蹦床用完了”

ios 设备上。

我对如何在 AOT 交叉编译期间增加不同蹦床类型的数量有很好的了解,但是,每当我们在运行时遇到上限时,我都会警惕任意增加分配。

我最近添加了一个接收多个 Func<> 参数的组件,并且该组件的大多数使用者都在匿名创建 Func<> 委托。我的假设是,虽然我可以预期每个匿名委托都会导致创建蹦床,但我似乎观察到的行为是,它没有重复使用该蹦床,而是继续创建类型 0(ntrampoline [method trampolines?]执行匿名委托的时间。

非常有用的是一个工具或一个 API 调用,它允许我在运行时监控、记录或分析应用程序以观察蹦床的创建。

任何关于公开通用委托或匿名委托使用的副作用的指导也将不胜感激。

感谢您提供正确方向的任何提示。

问候, 凯文·费伦

【问题讨论】:

【参考方案1】:

您最好的办法是向mono-devel 邮件列表提出此类(非常具体的)问题,即有几个问题(以及关于分析的建议)将很难在这里回答(即使它可以被正确标记) .

我假设您已经阅读了下面的链接(但它们可能会对想了解蹦床的人有所帮助)。

MonoTouch Troubleshooting

单声道维基 documentation 在蹦床上

Blog entry 试图揭开蹦床的神秘面纱

您还可以使用 --stats 选项从 Mono 获取一些统计信息。例如

mono --stats myapp.exe

...
JIT statistics
Unwind info size                    : 198
Calls to trampolines                : 626
JIT trampolines                     : 416
Unbox trampolines                   : 1
Static rgctx trampolines            : 1
...

但是,在使用 AOT(很多不同)以及您不控制应用程序执行的 MonoTouch 上下文中,它对您没有帮助。

【讨论】:

以上是关于如何分析 Monotouch 以查看运行时创建的蹦床数量(按类型)?的主要内容,如果未能解决你的问题,请参考以下文章

如何加快 MonoTouch 编译时间?

如何在应用程序运行时使用 MonoTouch 播放背景音乐

如何使用 Monotouch 在 iPad 故事板应用程序中以编程方式管理视图

应用程序运行时如何使用MonoTouch播放背景音乐

如何在模拟器中为 MonoTouch 应用程序生成 .dSYM?

如何在MonoTouch中为继承的视图创建UIAppearance代理?