【发布时间】:2012-08-14 00:05:17
【问题描述】:
我有一个 Mono for Android 应用程序,我认为当我连续多次使用 XMLDocument 类加载和解析 XML 文档时内存不足。
我看到垃圾收集器报告我只有 7367K 的可用内存,这似乎很低。
如何通过配置或在运行时增加此值?
【问题讨论】:
标签: c# xml garbage-collection xamarin.android
我有一个 Mono for Android 应用程序,我认为当我连续多次使用 XMLDocument 类加载和解析 XML 文档时内存不足。
我看到垃圾收集器报告我只有 7367K 的可用内存,这似乎很低。
如何通过配置或在运行时增加此值?
【问题讨论】:
标签: c# xml garbage-collection xamarin.android
恐怕每个应用程序使用的 Android 虚拟机内存非常有限:大多数情况下为 16MB,其他情况下为 24MB。我也遇到了这个限制。首先,您应该检查您的应用程序是否没有内存泄漏。如果这还不够,那么您可能需要考虑强制调用垃圾收集器:http://docs.xamarin.com/android/advanced_topics/garbage_collection。您还应该记住,调用 GC 会使您的应用程序变慢。
如果有人有更好的选择,我很乐意知道!
【讨论】:
我发现 XmlDocument 中有一个错误导致它在某些情况下崩溃(按顺序快速加载大型 XML 文件 (~180K))。我会将此报告给 Xamarin,看看他们是否可以进一步调查。
在我将代码转换为使用 XmlTextReader 后,内存行为发生了变化。现在系统会动态增加在 GC 周期中报告的堆大小。大小会根据需要上下浮动,不会崩溃。
使用 XmlDocument 代码,它没有增加堆大小,而是崩溃了。
【讨论】: