2012-08-14 51 views
0

我有一个Mono for Android应用程序,当我连续多次使用XMLDocument类加载并解析XML文档时,我认为内存不足。如何增加Mono for Android应用程序的堆大小?

我看到垃圾收集器报告我只有7367K的可用内存,这似乎很低。

如何通过配置或在运行时增加此功能?

回答

0

我发现XmlDocument中存在一个错误,导致它在某些情况下崩溃(按顺序快速加载大型XML文件(〜180K))。我会向Xamarin汇报这件事情,看他们是否可以进一步调查。

将我的代码转换为使用XmlTextReader代替后,内存行为发生了变化。现在系统动态增加GC循环期间报告的堆大小。尺寸根据需要上升和下降,没有任何崩溃。

使用XmlDocument代码,而不是增加堆大小,它只是崩溃。

0

恐怕每个应用程序使用的Android虚拟机内存都非常有限:大多数情况下为16MB,而其他一些内存为24MB。我也遇到了这个限制。首先,你应该检查你的应用程序没有内存泄漏。如果这还不够,那么您可能需要考虑强制调用垃圾回收器:http://docs.xamarin.com/android/advanced_topics/garbage_collection。你也应该记住调用GC会让你的应用程序变慢。

如果有人有更好的选择,我会很高兴知道!

+0

我在调试输出中得到类似这样的行,表示只分配了7MB:GC_CONCURRENT已释放247K,5%空闲6943K/7303K,暂停2ms + 2ms – MindJuice 2012-08-14 21:15:13