Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Xamarin中获得OutOfMemoryException_C#_Visual Studio_Xamarin_Xamarin.android - Fatal编程技术网

C# 在Xamarin中获得OutOfMemoryException

C# 在Xamarin中获得OutOfMemoryException,c#,visual-studio,xamarin,xamarin.android,C#,Visual Studio,Xamarin,Xamarin.android,java.lang.OutOfMemoryError。考虑增加价值 $(JavaMaximumHeapSize)。Java在执行时内存不足 “java.exe” 我的visualstudio Xamarin项目出现内存不足异常。请帮助我如何解决此问题。我会增加生成堆的大小 右键单击您的Android项目>属性Android选项高级Java最大堆大小 如果要增加应用程序的堆大小(而不是构建过程),可以在AndroidManifest.xml中设置: <application android:

java.lang.OutOfMemoryError。考虑增加价值 $(JavaMaximumHeapSize)。Java在执行时内存不足 “java.exe”


我的visualstudio Xamarin项目出现内存不足异常。请帮助我如何解决此问题。

我会增加生成堆的大小

右键单击您的Android项目>属性Android选项高级Java最大堆大小


如果要增加应用程序的堆大小(而不是构建过程),可以在AndroidManifest.xml中设置:

<application android:largeHeap="true"></application>


对于visual studio 2015,右键单击项目-->属性-->Android选项-->高级和堆大小。

从Xamarin studio 6.3版和visual studio 7.0.1开始,可以在此处找到增加堆大小的选项

右键单击android项目,然后选择options并选择Build/android Build,然后选择Advanced选项卡,并在Java堆大小中设置1G(或其他)


所选答案将引导我走向正确的方向,但对于Visual Studio 2017,屏幕看起来如下所示:


增加java最大堆大小对我来说很有效


当1G堆大小用完时,开始优化资源

首先检查您是否正在复制映像实例,并在内存中多次保留相同的映像。为此,请使用fImageLoadingLibrary()在nuget上快速轻松地获取它

然后优化您正在使用的图像。对于大图像,而不是图标,尝试将所有内容转换为jpeg格式,避免使用带有透明度的png格式,这曾经为我保存了恒定的OOM格式

然后尝试使用缩略图,而不是图像时,您可能有大型上传的图像远程。在您的服务器上为不同大小(迷你、小型、中型、普通、大型、xlarge等)预先创建缩略图,并仅加载您真正需要的大小的图像。这节省了大量内存和速度

另一个是内存泄漏。如果单元格或其他元素没有取消订阅消息、事件处理程序和其他内容,则它们可能仍驻留在im内存中。想象一下,当你确信这不可能发生时,你可以在内存中保存一个满是图像的列表的多个副本。更多信息请点击此处:


我已经修复了在AndroidManifiest.xml的应用程序标记中添加以下内容的问题

<application  android:largeHeap="true" android:label="sample"></application>

根据我的经验,内存问题只发生在android版本的Xamarin.Forms应用程序上。而且它总是要处理大尺寸的图像。我使用ffimageload()处理了这个问题

替换你的

<Image Source="waterfront.jpg" />



您将看到性能上的巨大改进,它还将解决您的内存问题

是的,你的权利。但是在visual studio xamarin中,我在哪里可以增加我的应用程序大小。@SrinivasCh在你的清单中添加
android:largeHeap=“true”
标记,然后查看你的
logcat
,查看
Grow heap(frag case)
以查看ART何时尝试分配更多内存。谢谢你的回复@lainSmith@SushiHangover啊好,,我以前有过这个错误,只是在这里增加了堆,但是如果你想使用一个大的堆,那么编辑manifes@Srinivas-我不担心,我建议不要只将LargeHeap设置为true。相反,您应该尝试找出导致OOM的原因并修复它。否则,可能会为您赢得一些时间,直到它再次击中您。请做到:左键单击。Droid-->双击“属性”-->单击左侧的“Android选项”-->单击“高级”选项卡-->“Java最大堆大小”
<ffimageloading:CachedImage Source="waterfront.jpg"
DownsampleToViewSize = true,
BitmapOptimizations = true/>