
启动仪表板/启动活动时,我有21.790 MB的已分配内存和堆大小26.016 MB.
当我打开帮助活动时,我只需使用OnCreate方法创建一个活动,如下所示:
protected overrIDe voID OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentVIEw(Resource.Layout.HelpActivity); Actionbar.SetdisplayHomeAsUpEnabled(true); _quickstartGuIDelinearLayout = FindVIEwByID<linearLayout>(Resource.ID.quickstart_guIDe_layout); _quickstartGuIDelinearLayout.Click += VIEwQuickstart; _usermanuallinearLayout = FindVIEwByID<linearLayout>(Resource.ID.user_manual_layout); _usermanuallinearLayout.Click += VIEwUserManual; } 然后在OnDestroy中:
protected overrIDe voID OnDestroy() { if (_quickstartGuIDelinearLayout != null) { _quickstartGuIDelinearLayout.Click -= VIEwQuickstart; _quickstartGuIDelinearLayout.dispose(); _quickstartGuIDelinearLayout = null; } if (_usermanuallinearLayout != null) { _usermanuallinearLayout.Click -= VIEwUserManual; _usermanuallinearLayout.dispose(); _usermanuallinearLayout = null; } base.OnDestroy(); } 当显示帮助活动时,内存使用量将高达22.102 MB,当我单击后退或 *** 作栏向上按钮时,它将仅下降到22.078 MB.
如果帮助活动被破坏,为什么它不会回到21.790 MB?
解决方法 我似乎通过将dispose()添加到我的OnDestroy()来修复它,如下所示:protected overrIDe voID OnDestroy() { base.OnDestroy(); dispose(); } 编辑:
没关系,似乎这纯粹是因为我将GC.Collect()与dispose()一起调用.删除dispose()没有任何负面影响所以我猜我的原始问题只是基于这样一个事实:小的无关紧要的内存增加量并没有导致Mono GC运行,这本质上是应该如何运行的.
编辑每个Xamarin支持:没有必要在OnDestroy()上的活动上调用dispose.通过FindVIEwByID找到的对象应该通过在每个上调用.dispose()以及通过 – = MyEventHandler删除事件处理程序来处理OnDestroy;
总结以上是内存溢出为你收集整理的Xamarin Android内存泄漏, *** 作简单全部内容,希望文章能够帮你解决Xamarin Android内存泄漏, *** 作简单所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)