java.lang.OutOfMemoryError。考虑增加$(JavaMaximumHeapSize)的值。 Java执行'java.exe'时内存不足
我在visualstudio Xamarin项目中出现内存异常请帮助我如何解决此问题。
如果要增加应用程序的堆大小(而不是构建过程),可以在AndroidManifest.xml中设置:
<application android:largeHeap="true"></application>
对于Visual Studio 2015,右键单击项目 - >属性 - > Android选项 - >高级和堆大小。
当用完1G堆大小时,开始优化资源。
首先检查您是否没有复制图像实例,将相同的图像保留在内存中多次。为此,使用ffimageloading库(https://github.com/luberda-molinet/FFImageLoading)快速轻松地获取它。
然后优化您正在使用的图像。对于除图标之外的大图像,尝试将所有内容转换为jpeg,避免使用具有透明度的png,这一直是为了保持我的恒定ooms。
然后,当您在遥控器上有大量上传的图像时,请尝试使用缩略图而不是图像。在您的服务器上预先创建不同大小的缩略图,迷你,小,中,普通,大,xlarge等,并只加载您真正需要的大小的图像。这节省了大量的内存和速度。
另一个是内存泄漏。如果单元格或其他元素没有取消订阅消息,事件处理程序和其他元素,则可能仍然驻留在内存中。想象一下,当你确定不会发生时,你可以拥有一份完整的图像列表的副本。更多信息:
https://forums.xamarin.com/discussion/123876/should-we-unsubscribe-all-events-for-memory-management
根据我的经验,内存问题只发生在Android版的Xamarin.Forms应用程序上。它总是要处理大尺寸图像。我通过使用FFImageLoading(https://github.com/luberda-molinet/FFImageLoading)解决了这个问题
替换你的
<Image Source="waterfront.jpg" />
同
<ffimageloading:CachedImage Source="waterfront.jpg"
DownsampleToViewSize = true,
BitmapOptimizations = true/>
您将看到性能的显着改善,它也将解决您的内存问题。
我在AndroidManifiest.xml的应用程序标签中修改了以下内容
<application android:largeHeap="true" android:label="sample"></application>