背景:我正在试图追踪Xamarin.Android应用程序中的内存泄漏。使用DDMS和Eclipse内存分析器,我能够看到哪些对象是活动的。当我试图跟踪是什么让他们活着(GC根)时,我只看到了“本机堆栈”(当然)。
我如何才能获取MONO的堆快照?所以以后我可以把它和堆弹工具一起使用吗?
或者,在Xamarin.android的.NET部件中,我还可以使用其他什么技术来找到一个活着的对象呢?在程序中可以做些什么吗?
发布于 2013-10-01 21:13:47
我如何才能获取MONO的堆快照?所以以后我可以把它和堆弹工具一起使用吗?
现在可以获得Mono的堆快照(使用Xamarin.Android 4.8.2beta进行测试;可能适用于以前的版本,您的里程可能有所不同)。这是一个四个步骤:
@PACKAGE_NAME@是应用程序的包名,例如,如果您的包是FooBar.FooBar-Signed.apk,那么@PACKAGE_NAME@将是FooBar.FooBar。mprof-report包含在Mono中。注意事项:只有在发生GC时才更新profile.mlpd,因此您可能需要在某个“知名”点调用GC.Collect(),以确保profile.mlpd定期更新。
发布于 2014-02-11 14:25:31
我一直在处理Xamarin Android内存分析方面的问题,并使用了一些技巧:
顺便说一下,应该投票给更好的分析器:http://xamarin.uservoice.com/forums/144858-xamarin-suggestions/suggestions/3229534-add-memory-and-performance-profiler
https://stackoverflow.com/questions/19125266
复制相似问题