2012-08-14 76 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